Skip to content

Commit d22654b

Browse files
committed
Add support for ClickHouse MATERIALIZED column in CREATE TABLE
- allow `MATERIALIZED` in column specs - allow `ORDER BY` in table options - add regression test for `ENGINE = MergeTree() ORDER BY tuple()`
1 parent 38c963d commit d22654b

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8619,9 +8619,9 @@ List<String> CreateParameter():
86198619
| tk=<K_CONSTRAINT> | tk=<K_WITH> | tk=<K_EXCLUDE> | tk=<K_WHERE>
86208620
| tk=<K_TEMP> | tk=<K_TEMPORARY> | tk=<K_PARTITION> | tk=<K_BY> | tk=<K_IN>
86218621
| tk=<K_TYPE> | tk=<K_COMMENT> | tk=<K_USING> | tk=<K_COLLATE> | tk=<K_ASC>
8622-
| tk=<K_DESC> | tk=<K_TRUE> | tk=<K_FALSE> | tk=<K_PARALLEL> | tk=<K_BINARY> | tk=<K_START>
8622+
| tk=<K_DESC> | tk=<K_TRUE> | tk=<K_FALSE> | tk=<K_PARALLEL> | tk=<K_BINARY> | tk=<K_START> | tk=<K_ORDER>
86238623
| tk=<K_TIME_KEY_EXPR> | tk=<K_RAW> | tk=<K_HASH> | tk=<K_FIRST> | tk=<K_LAST> | tk = <K_SIGNED> | tk = <K_UNSIGNED>
8624-
| tk=<K_ENGINE> | tk=<K_IDENTITY>
8624+
| tk=<K_ENGINE> | tk=<K_IDENTITY> | tk=<K_MATERIALIZED>
86258625
| tk="="
86268626
)
86278627
{ param.add(tk.image); }

src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,17 @@ public void testCreateTableDefault2() throws JSQLParserException {
219219
assertSqlCanBeParsedAndDeparsed("CREATE TABLE T1 (id integer default 1)");
220220
}
221221

222+
@Test
223+
public void testCreateTableClickHouseMaterializedColumn() throws JSQLParserException {
224+
String statement = "CREATE TABLE t (\n"
225+
+ " url String,\n"
226+
+ " domain String MATERIALIZED regexpExtract(url, '^(?:https?://)?([^/]+)', 1)\n"
227+
+ ")\n"
228+
+ "ENGINE = MergeTree()\n"
229+
+ "ORDER BY tuple()";
230+
assertSqlCanBeParsedAndDeparsed(statement, true);
231+
}
232+
222233
@Test
223234
public void testCreateTableIfNotExists() throws JSQLParserException {
224235
assertSqlCanBeParsedAndDeparsed("CREATE TABLE IF NOT EXISTS animals (id INT NOT NULL)");
@@ -1076,7 +1087,7 @@ void testUniqueAfterForeignKeyIssue2082() throws JSQLParserException {
10761087

10771088
@Test
10781089
void testWithCatalog() throws JSQLParserException {
1079-
String sqlStr="CREATE TABLE UNNAMED.session1.a (b VARCHAR (1))";
1090+
String sqlStr = "CREATE TABLE UNNAMED.session1.a (b VARCHAR (1))";
10801091
CreateTable st = (CreateTable) assertSqlCanBeParsedAndDeparsed(sqlStr, true);
10811092

10821093
Table t = st.getTable();

0 commit comments

Comments
 (0)