Skip to content

Commit f2e74f1

Browse files
authored
support create table parameters without columns, parameter values any names (#1106)
CREATE TEMPORARY TABLE t1 WITH (APPENDONLY=true,ORIENTATION=column,COMPRESSTYPE=zlib,OIDS=FALSE) ON COMMIT DROP AS SELECT column FROM t2
1 parent d7b468a commit f2e74f1

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

src/main/java/net/sf/jsqlparser/statement/create/table/CreateTable.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,10 @@ public String toString() {
158158
sql += PlainSelect.getStringList(indexes);
159159
}
160160
sql += ")";
161-
String options = PlainSelect.getStringList(tableOptionsStrings, false, false);
162-
if (options != null && options.length() > 0) {
163-
sql += " " + options;
164-
}
161+
}
162+
String options = PlainSelect.getStringList(tableOptionsStrings, false, false);
163+
if (options != null && options.length() > 0) {
164+
sql += " " + options;
165165
}
166166

167167
if (rowMovement != null) {

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4135,7 +4135,7 @@ CreateTable CreateTable():
41354135
<K_TABLE>
41364136
[ LOOKAHEAD(2) <K_IF> <K_NOT> <K_EXISTS> { createTable.setIfNotExists(true); }]
41374137
table=Table()
4138-
[
4138+
[ LOOKAHEAD(2)
41394139
("("
41404140
coldef = ColumnDefinition()
41414141

@@ -4259,9 +4259,10 @@ CreateTable CreateTable():
42594259
)*
42604260

42614261
")"
4262-
( parameter=CreateParameter() { tableOptions.addAll(parameter); } )*
42634262
)
42644263
]
4264+
( parameter=CreateParameter() { tableOptions.addAll(parameter); } )*
4265+
42654266
// see https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7002.htm#i2126725
42664267
// table properties , all these are optional
42674268
[ rowMovement = RowMovement() { createTable.setRowMovement(rowMovement); }]
@@ -4429,6 +4430,8 @@ List<String> CreateParameter():
44294430
|
44304431
tk=<K_COMMIT> { param.add(tk.image); }
44314432
|
4433+
tk=<K_DROP> { param.add(tk.image); }
4434+
|
44324435
tk=<K_ROWS> { param.add(tk.image); }
44334436
|
44344437
tk=<K_UNIQUE> { param.add(tk.image); }
@@ -4480,7 +4483,7 @@ List<String> CreateParameter():
44804483
tk=<K_COLLATE> { param.add(tk.image); }
44814484
|
44824485
tk=<K_ASC> { param.add(tk.image); }
4483-
|
4486+
|
44844487
tk=<K_DESC> { param.add(tk.image); }
44854488
|
44864489
tk=<K_TRUE> { param.add(tk.image); }
@@ -4510,12 +4513,14 @@ String AList():
45104513
{
45114514
StringBuilder retval = new StringBuilder("(");
45124515
Token tk = null;
4513-
Token tk2 = null;
4516+
String name = null;
45144517
}
45154518
{
45164519
"("
45174520

4518-
( (tk=<S_LONG> | tk=<S_DOUBLE> | tk=<S_CHAR_LITERAL> | tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { retval.append(tk.image); }
4521+
(
4522+
( (tk=<S_LONG> | tk=<S_DOUBLE> | tk=<S_CHAR_LITERAL>) { retval.append(tk.image); }
4523+
| (name=RelObjectNameWithoutValue()) { retval.append(name); })
45194524
[("," {retval.append(",");} | "=" {retval.append("=");})] )*
45204525

45214526
")"

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ public void testCreateTableParams() throws JSQLParserException {
141141
assertSqlCanBeParsedAndDeparsed("CREATE TEMPORARY TABLE T1 (PROCESSID VARCHAR (32)) ON COMMIT PRESERVE ROWS");
142142
}
143143

144+
@Test
145+
public void testCreateTableParams2() throws JSQLParserException {
146+
assertSqlCanBeParsedAndDeparsed("CREATE TEMPORARY TABLE t1 WITH (APPENDONLY=true,ORIENTATION=column,COMPRESSTYPE=zlib,OIDS=FALSE) ON COMMIT DROP AS SELECT column FROM t2");
147+
}
148+
149+
144150
@Test
145151
public void testCreateTableUniqueConstraint() throws JSQLParserException {
146152
assertSqlCanBeParsedAndDeparsed("CREATE TABLE Activities (_id INTEGER PRIMARY KEY AUTOINCREMENT,uuid VARCHAR(255),user_id INTEGER,sound_id INTEGER,sound_type INTEGER,comment_id INTEGER,type String,tags VARCHAR(255),created_at INTEGER,content_id INTEGER,sharing_note_text VARCHAR(255),sharing_note_created_at INTEGER,UNIQUE (created_at, type, content_id, sound_id, user_id))", true);

0 commit comments

Comments
 (0)