diff --git a/src/main/java/com/alibaba/druid/sql/dialect/clickhouse/visitor/ClickhouseOutputVisitor.java b/src/main/java/com/alibaba/druid/sql/dialect/clickhouse/visitor/ClickhouseOutputVisitor.java index b42e3a553b..39eff20ff2 100644 --- a/src/main/java/com/alibaba/druid/sql/dialect/clickhouse/visitor/ClickhouseOutputVisitor.java +++ b/src/main/java/com/alibaba/druid/sql/dialect/clickhouse/visitor/ClickhouseOutputVisitor.java @@ -109,4 +109,31 @@ public class ClickhouseOutputVisitor extends SQLASTOutputVisitor implements Clic printAndAccept(x.getColumns(), ", "); return false; } + + @Override + public boolean visit(SQLArrayDataType x) { + final List arguments = x.getArguments(); + if (Boolean.TRUE.equals(x.getAttribute("ads.arrayDataType"))) { + x.getComponentType().accept(this); + print('['); + printAndAccept(arguments, ", "); + print(']'); + } else { + SQLDataType componentType = x.getComponentType(); + if (componentType != null) { + print0(ucase ? "Array<" : "array<"); + componentType.accept(this); + print('>'); + } else { + print0(ucase ? "Array" : "array"); + } + + if (arguments.size() > 0) { + print('('); + printAndAccept(arguments, ", "); + print(')'); + } + } + return false; + } } diff --git a/src/test/java/com/alibaba/druid/bvt/sql/clickhouse/ClickHouseResourceTest.java b/src/test/java/com/alibaba/druid/bvt/sql/clickhouse/ClickHouseResourceTest.java index b27f28cc81..5bb3b94d5d 100644 --- a/src/test/java/com/alibaba/druid/bvt/sql/clickhouse/ClickHouseResourceTest.java +++ b/src/test/java/com/alibaba/druid/bvt/sql/clickhouse/ClickHouseResourceTest.java @@ -91,6 +91,10 @@ public class ClickHouseResourceTest extends OracleTest { exec_test("bvt/parser/clickhouse-13.txt"); } + public void test_14() throws Exception { + exec_test("bvt/parser/clickhouse-14.txt"); + } + public void exec_test(String resource) throws Exception { System.out.println(resource); InputStream is = null; diff --git a/src/test/resources/bvt/parser/clickhouse-14.txt b/src/test/resources/bvt/parser/clickhouse-14.txt new file mode 100644 index 0000000000..9eabf56d04 --- /dev/null +++ b/src/test/resources/bvt/parser/clickhouse-14.txt @@ -0,0 +1,12 @@ +CREATE TABLE if not exists etda.mytable1 +( + `id` UInt64, + `action_parameter_uint64_list` Array(UInt64), + `action_parameter_string_list` Array(String) +) +--------------------------- +CREATE TABLE IF NOT EXISTS etda.mytable1 ( + `id` UInt64, + `action_parameter_uint64_list` Array(UInt64), + `action_parameter_string_list` Array(String) +) \ No newline at end of file