Skip to content

Commit 12b4a1e

Browse files
committed
fixes #273
1 parent 3a5a625 commit 12b4a1e

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
148148
| <K_BINARY: "BINARY">
149149
| <K_BIT:"BIT">
150150
| <K_BY:"BY">
151+
| <K_BYTE: "BYTE">
151152
| <K_CALL : "CALL">
152153
| <K_CASCADE: "CASCADE">
153154
| <K_CASE:"CASE">
@@ -966,7 +967,7 @@ Not all names should be allowed for aliases.
966967
String RelObjectNameWithoutValue() :
967968
{ Token tk = null; }
968969
{
969-
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>
970+
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER> | tk=<K_BYTE>
970971
| tk=<K_CAST> | tk=<K_DO> | tk=<K_EXTRACT> | tk=<K_FIRST> | tk=<K_FOLLOWING>
971972
| tk=<K_LAST> | tk=<K_MATERIALIZED> | tk=<K_NULLS> | tk=<K_PARTITION> | tk=<K_RANGE>
972973
| tk=<K_ROW> | tk=<K_ROWS> | tk=<K_SIBLINGS> | tk=<K_XML>
@@ -3224,7 +3225,8 @@ ColDataType ColDataType():
32243225
| tk=<K_UNSIGNED> tk2=<S_IDENTIFIER> {colDataType.setDataType(tk.image + " " + tk2.image);}
32253226
)
32263227

3227-
[LOOKAHEAD(2) "(" ( (tk=<S_LONG> | tk=<S_CHAR_LITERAL> | tk=<S_IDENTIFIER> ) { argumentsStringList.add(tk.image); } ["," {/*argumentsStringList.add(",");*/}] )* ")"]
3228+
[LOOKAHEAD(2) "(" {tk2 =null;} ( (tk=<S_LONG> [ tk2=<K_BYTE> ] | tk=<S_CHAR_LITERAL> | tk=<S_IDENTIFIER> )
3229+
{ argumentsStringList.add(tk.image + (tk2!=null?" " + tk2.image:"")); } ["," {/*argumentsStringList.add(",");*/}] )* ")"]
32283230
[( "[" {tk=null;} [ tk=<S_LONG> ] { array.add(tk!=null?Integer.valueOf(tk.image):null); } "]" )+ { colDataType.setArrayData(array); } ]
32293231
[<K_CHARACTER> <K_SET> tk=<S_IDENTIFIER> { colDataType.setCharacterSet(tk.image); } ]
32303232

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

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -255,32 +255,36 @@ public void testCreateUnitonIssue402() throws JSQLParserException {
255255
public void testCreateUnitonIssue402_2() throws JSQLParserException {
256256
assertSqlCanBeParsedAndDeparsed("CREATE TABLE temp.abc AS (SELECT sku FROM temp.a UNION SELECT sku FROM temp.b)");
257257
}
258-
258+
259259
public void testTimestampWithTimezone() throws JSQLParserException {
260-
assertSqlCanBeParsedAndDeparsed("CREATE TABLE country_region (" +
261-
"regionid BIGINT NOT NULL CONSTRAINT pk_auth_region PRIMARY KEY, " +
262-
"region_name VARCHAR (100) NOT NULL, " +
263-
"creation_date TIMESTAMP (0) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP (0) NOT NULL, " +
264-
"last_change_date TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP (0), " +
265-
"CONSTRAINT region_name_unique UNIQUE (region_name))");
266-
}
267-
260+
assertSqlCanBeParsedAndDeparsed("CREATE TABLE country_region ("
261+
+ "regionid BIGINT NOT NULL CONSTRAINT pk_auth_region PRIMARY KEY, "
262+
+ "region_name VARCHAR (100) NOT NULL, "
263+
+ "creation_date TIMESTAMP (0) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP (0) NOT NULL, "
264+
+ "last_change_date TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP (0), "
265+
+ "CONSTRAINT region_name_unique UNIQUE (region_name))");
266+
}
267+
268268
public void testCreateTableAsSelect3() throws JSQLParserException {
269269
assertSqlCanBeParsedAndDeparsed("CREATE TABLE public.sales1 AS (SELECT * FROM public.sales)");
270270
}
271-
271+
272272
public void testQuotedPKColumnsIssue491() throws JSQLParserException {
273273
assertSqlCanBeParsedAndDeparsed("CREATE TABLE `FOO` (`ID` INT64, `NAME` STRING (100)) PRIMARY KEY (`ID`)");
274274
}
275-
275+
276276
public void testQuotedPKColumnsIssue491_2() throws JSQLParserException {
277277
assertSqlCanBeParsedAndDeparsed("CREATE TABLE `FOO` (`ID` INT64, `NAME` STRING (100), PRIMARY KEY (`ID`))");
278278
}
279-
279+
280280
public void testKeySyntaxWithLengthColumnParameter() throws JSQLParserException {
281281
assertSqlCanBeParsedAndDeparsed("CREATE TABLE basic (BASIC_TITLE varchar (255) NOT NULL, KEY BASIC_TITLE (BASIC_TITLE(255)))");
282282
}
283283

284+
public void testIssue273Varchar2Byte() throws JSQLParserException {
285+
assertSqlCanBeParsedAndDeparsed("CREATE TABLE IF NOT EXISTS \"TABLE_OK\" (\"SOME_FIELD\" VARCHAR2 (256 BYTE))");
286+
}
287+
284288
public void testRUBiSCreateList() throws Exception {
285289
BufferedReader in = new BufferedReader(new InputStreamReader(CreateTableTest.class.
286290
getResourceAsStream("/RUBiS-create-requests.txt")));

0 commit comments

Comments
 (0)