diff --git hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4 hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4 index 186b617a13..77c2e2c419 100644 --- hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4 +++ hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4 @@ -227,7 +227,7 @@ create_local_temp_table_stmt : ; create_table_definition : - (T_AS? T_OPEN_P select_stmt T_CLOSE_P | T_AS? select_stmt | T_OPEN_P create_table_columns T_CLOSE_P) create_table_options? + (T_AS? T_OPEN_P select_stmt T_CLOSE_P | T_AS? select_stmt | T_OPEN_P create_table_columns T_CLOSE_P | T_LIKE table_name) create_table_options? ; create_table_columns : diff --git hplsql/src/main/java/org/apache/hive/hplsql/Stmt.java hplsql/src/main/java/org/apache/hive/hplsql/Stmt.java index 0094e8220b..eabb9fa7e0 100644 --- hplsql/src/main/java/org/apache/hive/hplsql/Stmt.java +++ hplsql/src/main/java/org/apache/hive/hplsql/Stmt.java @@ -172,6 +172,9 @@ String createTableDefinition(HplsqlParser.Create_table_definitionContext ctx, To } exec.append(sql, ctx.T_CLOSE_P().getText(), last, ctx.T_CLOSE_P().getSymbol()); } + else if (ctx.T_LIKE() != null) { + sql.append(" ").append(ctx.T_LIKE().getText()).append(" ").append(evalPop(ctx.table_name())); + } // CREATE TABLE AS SELECT statement else { exec.append(sql, evalPop(ctx.select_stmt()).toString(), last, ctx.select_stmt().getStart()); diff --git hplsql/src/test/java/org/apache/hive/hplsql/TestHplsqlOffline.java hplsql/src/test/java/org/apache/hive/hplsql/TestHplsqlOffline.java index c908191e22..b48c8c5fa9 100644 --- hplsql/src/test/java/org/apache/hive/hplsql/TestHplsqlOffline.java +++ hplsql/src/test/java/org/apache/hive/hplsql/TestHplsqlOffline.java @@ -33,6 +33,11 @@ private final ByteArrayOutputStream out = new ByteArrayOutputStream(); + @Test + public void testCreateTable() throws Exception { + run("create_table"); + } + @Test public void testCreateTableDb2() throws Exception { run("create_table_db2"); diff --git hplsql/src/test/queries/offline/create_table.sql hplsql/src/test/queries/offline/create_table.sql new file mode 100644 index 0000000000..9fde50fa8d --- /dev/null +++ hplsql/src/test/queries/offline/create_table.sql @@ -0,0 +1 @@ +CREATE TABLE tbl LIKE tbl2; \ No newline at end of file diff --git hplsql/src/test/results/offline/create_table.out.txt hplsql/src/test/results/offline/create_table.out.txt new file mode 100644 index 0000000000..fac30ed9f9 --- /dev/null +++ hplsql/src/test/results/offline/create_table.out.txt @@ -0,0 +1,2 @@ +Ln:1 CREATE TABLE +Ln:1 CREATE TABLE tbl LIKE tbl2 \ No newline at end of file