Skip to content

Commit f5af305

Browse files
committed
problems solved with postgresqls data type "character varying"
1 parent 9da7282 commit f5af305

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,8 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
253253
| <K_FOREIGN:"FOREIGN">
254254
| <K_CONSTRAINT:"CONSTRAINT">
255255
| <K_REFERENCES:"REFERENCES">
256+
| <K_CHARACTER:"CHARACTER">
257+
| <K_VARYING:"VARYING">
256258
}
257259

258260

@@ -2128,7 +2130,8 @@ ColDataType ColDataType():
21282130
ArrayList argumentsStringList = new ArrayList();
21292131
}
21302132
{
2131-
( tk=<S_IDENTIFIER> { colDataType.setDataType(tk.image); } )
2133+
( <K_CHARACTER> <K_VARYING> { colDataType.setDataType("character varying"); }
2134+
| tk=<S_IDENTIFIER> { colDataType.setDataType(tk.image); } )
21322135

21332136

21342137
[LOOKAHEAD(2) "(" ( (tk=<S_INTEGER> | tk=<S_CHAR_LITERAL>) { argumentsStringList.add(tk.image); } ["," {/*argumentsStringList.add(",");*/}] )* ")"]

src/test/java/net/sf/jsqlparser/test/select/SelectTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -688,6 +688,11 @@ public void testCastTypeProblem5() throws JSQLParserException {
688688
String stmt = "SELECT 5.67::varchar (256) FROM tabelle1";
689689
assertSqlCanBeParsedAndDeparsed(stmt);
690690
}
691+
692+
public void testCastTypeProblem6() throws JSQLParserException {
693+
String stmt = "SELECT 'test'::character varying FROM tabelle1";
694+
assertSqlCanBeParsedAndDeparsed(stmt);
695+
}
691696

692697
public void testCaseElseAddition() throws JSQLParserException {
693698
String stmt = "SELECT CASE WHEN 1 + 3 > 20 THEN 0 ELSE 1000 + 1 END AS d FROM dual";
@@ -1088,6 +1093,7 @@ public void testNamedParameter() throws JSQLParserException {
10881093
assertEquals("param", namedParameter.getName());
10891094

10901095
}
1096+
10911097
public void testNamedParameter2() throws JSQLParserException {
10921098
String stmt = "SELECT * FROM mytable WHERE a = :param OR a = :param2 AND b = :param3";
10931099
assertSqlCanBeParsedAndDeparsed(stmt);
@@ -1117,4 +1123,11 @@ public void testNamedParameter2() throws JSQLParserException {
11171123
assertEquals("param2", namedParameter2.getName());
11181124
assertEquals("param3", namedParameter3.getName());
11191125
}
1126+
1127+
public void testComplexUnion1() throws IOException, JSQLParserException {
1128+
String stmt = "(SELECT 'abc-' || coalesce(mytab.a::varchar, '') AS a, mytab.b, mytab.c AS st, mytab.d, mytab.e FROM mytab WHERE mytab.del = 0) UNION (SELECT 'cde-' || coalesce(mytab2.a::varchar, '') AS a, mytab2.b, mytab2.bezeichnung AS c, 0 AS d, 0 AS e FROM mytab2 WHERE mytab2.del = 0)";
1129+
assertSqlCanBeParsedAndDeparsed(stmt);
1130+
}
1131+
1132+
11201133
}

0 commit comments

Comments
 (0)