Skip to content

Commit 121efd9

Browse files
committed
Support table option character set and index options
Signed-off-by: luofei <luoffei@outlook.com>
1 parent bf8a7db commit 121efd9

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4988,8 +4988,10 @@ CreateTable CreateTable():
49884988
sk3=RelObjectName()
49894989
/* colNames=ColumnsNamesList() */
49904990
colNames = ColumnNamesWithParamsList()
4991+
{ idxSpec.clear(); }
4992+
( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
49914993
{
4992-
index = new Index().withType(tk.image).withName(sk3).withColumns(colNames);
4994+
index = new Index().withType(tk.image).withName(sk3).withColumns(colNames).withIndexSpec(idxSpec);
49934995
indexes.add(index);
49944996
}
49954997
)
@@ -5005,6 +5007,7 @@ CreateTable CreateTable():
50055007
)
50065008
/* colNames=ColumnsNamesList() */
50075009
colNames = ColumnNamesWithParamsList()
5010+
{ idxSpec.clear(); }
50085011
( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
50095012
{
50105013
index.withColumns(colNames).withIndexSpec(idxSpec);
@@ -5021,6 +5024,7 @@ CreateTable CreateTable():
50215024
sk3=RelObjectName()
50225025
/* colNames=ColumnsNamesList() */
50235026
colNames = ColumnNamesWithParamsList()
5027+
{ idxSpec.clear(); }
50245028
( parameter=CreateParameter() { idxSpec.addAll(parameter); } )*
50255029
{
50265030
index = new Index()
@@ -5338,6 +5342,8 @@ List<String> CreateParameter():
53385342
|
53395343
tk=<K_BINARY> { param.add(tk.image); }
53405344
|
5345+
(tk=<K_CHARACTER> tk2=<K_SET>) { param.add(tk.image); param.add(tk2.image);}
5346+
|
53415347
(<K_ARRAY_LITERAL> exp=ArrayConstructor(true)) { param.add(exp.toString()); }
53425348
|
53435349
tk="::" colDataType = ColDataType() { param.add(tk.image); param.add(colDataType.toString()); }

src/test/java/net/sf/jsqlparser/parser/CCJSqlParserUtilTest.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,4 +270,49 @@ public void testCondExpressionIssue1482_2() throws JSQLParserException {
270270
Expression expr = CCJSqlParserUtil.parseCondExpression("test_table_enum.f1_enum IN ('TEST2'::test.\"test_enum\")", false);
271271
assertEquals("test_table_enum.f1_enum IN ('TEST2'::test.\"test_enum\")", expr.toString());
272272
}
273+
274+
@Test
275+
public void testParseStatementIssue1488() throws JSQLParserException {
276+
Statements result = CCJSqlParserUtil.parseStatements("CREATE TABLE u_call_record (\n" +
277+
"card_user_id int(11) NOT NULL,\n" +
278+
"device_id int(11) NOT NULL,\n" +
279+
"call_start_at int(11) NOT NULL DEFAULT CURRENT_TIMESTAMP(11),\n" +
280+
"card_user_name varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
281+
"sim_id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
282+
"called_number varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
283+
"called_nickname varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
284+
"talk_time smallint(8) NULL DEFAULT NULL,\n" +
285+
"area_name varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
286+
"area_service_id int(11) NULL DEFAULT NULL,\n" +
287+
"operator_id int(4) NULL DEFAULT NULL,\n" +
288+
"status tinyint(4) NULL DEFAULT NULL,\n" +
289+
"create_at timestamp NULL DEFAULT NULL,\n" +
290+
"place_user varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,\n" +
291+
"PRIMARY KEY (card_user_id, device_id, call_start_at) USING BTREE,\n" +
292+
"INDEX ucr_index_area_name(area_name) USING BTREE,\n" +
293+
"INDEX ucr_index_area_service_id(area_service_id) USING BTREE,\n" +
294+
"INDEX ucr_index_called_number(called_number) USING BTREE,\n" +
295+
"INDEX ucr_index_create_at(create_at) USING BTREE,\n" +
296+
"INDEX ucr_index_operator_id(operator_id) USING BTREE,\n" +
297+
"INDEX ucr_index_place_user(place_user) USING BTREE,\n" +
298+
"INDEX ucr_index_sim_id(sim_id) USING BTREE,\n" +
299+
"INDEX ucr_index_status(status) USING BTREE,\n" +
300+
"INDEX ucr_index_talk_time(talk_time) USING BTREE\n" +
301+
") ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;");
302+
303+
assertEquals("CREATE TABLE u_call_record (card_user_id int (11) NOT NULL, device_id int (11) NOT NULL, " +
304+
"call_start_at int (11) NOT NULL DEFAULT CURRENT_TIMESTAMP (11), card_user_name varchar (32) CHARACTER SET " +
305+
"utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, sim_id varchar (32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci" +
306+
" NULL DEFAULT NULL, called_number varchar (12) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT " +
307+
"NULL, called_nickname varchar (32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, talk_time " +
308+
"smallint (8) NULL DEFAULT NULL, area_name varchar (32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL " +
309+
"DEFAULT NULL, area_service_id int (11) NULL DEFAULT NULL, operator_id int (4) NULL DEFAULT NULL, status tinyint (4) " +
310+
"NULL DEFAULT NULL, create_at timestamp NULL DEFAULT NULL, place_user varchar (16) CHARACTER SET utf8mb4 COLLATE " +
311+
"utf8mb4_general_ci NULL DEFAULT NULL, PRIMARY KEY (card_user_id, device_id, call_start_at) USING BTREE, INDEX " +
312+
"ucr_index_area_name (area_name) USING BTREE, INDEX ucr_index_area_service_id (area_service_id) USING BTREE, " +
313+
"INDEX ucr_index_called_number (called_number) USING BTREE, INDEX ucr_index_create_at (create_at) USING BTREE, " +
314+
"INDEX ucr_index_operator_id (operator_id) USING BTREE, INDEX ucr_index_place_user (place_user) USING BTREE, " +
315+
"INDEX ucr_index_sim_id (sim_id) USING BTREE, INDEX ucr_index_status (status) USING BTREE, INDEX ucr_index_talk_time " +
316+
"(talk_time) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;\n", result.toString());
317+
}
273318
}

0 commit comments

Comments
 (0)