Skip to content

Commit 56126cf

Browse files
committed
Merge origin/master
Conflicts: src/test/java/net/sf/jsqlparser/test/select/SelectTest.java
2 parents 5bc1fc3 + 66e44c9 commit 56126cf

File tree

8 files changed

+37
-10
lines changed

8 files changed

+37
-10
lines changed

src/main/java/net/sf/jsqlparser/schema/Column.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,19 @@ public void setColumnName(String string) {
6262

6363
@Override
6464
public String getFullyQualifiedName() {
65+
return getName(false);
66+
}
67+
68+
/**
69+
* Get name with out without using aliases.
70+
* @param aliases
71+
* @return
72+
*/
73+
public String getName(boolean aliases) {
6574
StringBuilder fqn = new StringBuilder();
6675

6776
if (table != null) {
68-
if (table.getAlias() != null) {
77+
if (table.getAlias() != null && aliases) {
6978
fqn.append(table.getAlias().getName());
7079
} else {
7180
fqn.append(table.getFullyQualifiedName());
@@ -87,6 +96,6 @@ public void accept(ExpressionVisitor expressionVisitor) {
8796

8897
@Override
8998
public String toString() {
90-
return getFullyQualifiedName();
99+
return getName(true);
91100
}
92101
}

src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,6 @@ public void visit(PlainSelect plainSelect) {
174174
}
175175
}
176176

177-
public void visit(Column column) {
178-
buffer.append(column.getFullyQualifiedName());
179-
}
180-
181177
@Override
182178
public void visit(AllTableColumns allTableColumns) {
183179
buffer.append(allTableColumns.getTable().getFullyQualifiedName()).append(".*");
@@ -360,7 +356,7 @@ public void deparseJoin(Join join) {
360356
buffer.append(" USING (");
361357
for (Iterator<Column> iterator = join.getUsingColumns().iterator(); iterator.hasNext();) {
362358
Column column = iterator.next();
363-
buffer.append(column.getFullyQualifiedName());
359+
buffer.append(column.toString());
364360
if (iterator.hasNext()) {
365361
buffer.append(", ");
366362
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ String RelObjectName() :
761761
| tk=<K_COLUMN> | tk=<K_REPLACE> | tk=<K_TRUNCATE> | tk=<K_KEY> | tk=<K_ANY>
762762
| tk=<K_OPEN> | tk=<K_OVER> | tk=<K_VALUES> | tk=<K_PERCENT> | tk=<K_PRIOR>
763763
| tk=<K_SEPARATOR> | tk=<K_NO> | tk=<K_ACTION> | tk=<K_CASCADE> | tk=<K_END>
764-
| tk=<K_TABLE> | tk=<K_DATETIMELITERAL> | tk=<K_COMMIT>
764+
| tk=<K_TABLE> | tk=<K_DATETIMELITERAL> | tk=<K_COMMIT> | tk=<K_PRECISION>
765765
)
766766

767767
{ return tk.image; }
@@ -2849,7 +2849,7 @@ ColDataType ColDataType():
28492849
}
28502850
{
28512851
( (tk=<K_CHARACTER> | tk=<K_BIT>) [tk2=<K_VARYING>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
2852-
| tk=<K_DOUBLE> [tk2=<K_PRECISION>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
2852+
| tk=<K_DOUBLE> [LOOKAHEAD(2) tk2=<K_PRECISION>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
28532853
| ( tk=<S_IDENTIFIER> | tk=<K_DATETIMELITERAL> | tk=<K_XML> | tk=<K_INTERVAL> | tk=<DT_ZONE> ) { colDataType.setDataType(tk.image); })
28542854

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

src/test/java/net/sf/jsqlparser/test/TestUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public static void assertStatementCanBeDeparsedAs(Statement parsed, String state
8181
public static String buildSqlString(String sql, boolean laxDeparsingCheck) {
8282
sql = SQL_COMMENT_PATTERN.matcher(sql).replaceAll("");
8383
if (laxDeparsingCheck) {
84-
return sql.replaceAll("\\s", " ").replaceAll("\\s+", " ").replaceAll("\\s*([/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim();
84+
return sql.replaceAll("\\s", " ").replaceAll("\\s+", " ").replaceAll("\\s*([!/,()=+\\-*|\\]<>])\\s*", "$1").toLowerCase().trim();
8585
} else {
8686
return sql;
8787
}

src/test/java/net/sf/jsqlparser/test/insert/InsertTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,9 @@ public void testModifierPriority3() throws JSQLParserException {
177177
public void testIssue223() throws JSQLParserException {
178178
assertSqlCanBeParsedAndDeparsed("INSERT INTO user VALUES (2001, '\\'Clark\\'', 'Kent')");
179179
}
180+
181+
@Test
182+
public void testKeywordPrecisionIssue363() throws JSQLParserException {
183+
assertSqlCanBeParsedAndDeparsed("INSERT INTO test (user_id, precision) VALUES (1, '111')");
184+
}
180185
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2281,4 +2281,8 @@ public void testProblemKeywordCommitIssue341() throws JSQLParserException {
22812281
public void testProblemSqlIssue352() throws JSQLParserException {
22822282
assertSqlCanBeParsedAndDeparsed( "SELECT @rowNO from (SELECT @rowNO from dual) r", true);
22832283
}
2284+
2285+
public void testProblemIsIssue331() throws JSQLParserException {
2286+
assertSqlCanBeParsedAndDeparsed("SELECT C_DocType.C_DocType_ID,NULL,COALESCE(C_DocType_Trl.Name,C_DocType.Name) AS Name,C_DocType.IsActive FROM C_DocType LEFT JOIN C_DocType_TRL ON (C_DocType.C_DocType_ID=C_DocType_Trl.C_DocType_ID AND C_DocType_Trl.AD_Language='es_AR') WHERE C_DocType.AD_Client_ID=1010016 AND C_DocType.AD_Client_ID IN (0,1010016) AND C_DocType.c_doctype_id in ( select c_doctype2.c_doctype_id from c_doctype as c_doctype2 where substring( c_doctype2.printname,6, length(c_doctype2.printname) ) = ( select letra from c_letra_comprobante as clc where clc.c_letra_comprobante_id = 1010039) ) AND ( (1010094!=0 AND C_DocType.ad_org_id = 1010094) OR 1010094=0 ) ORDER BY 3 LIMIT 2000", true);
2287+
}
22842288
}

src/test/java/net/sf/jsqlparser/test/update/UpdateTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,8 @@ public void testUpdateDoesNotAllowLimitOffset() throws JSQLParserException {
108108
parserManager.parse(new StringReader(statement));
109109
}
110110

111+
@Test
112+
public void testUpdateWithFunctions() throws JSQLParserException {
113+
assertSqlCanBeParsedAndDeparsed("UPDATE tablename SET col = SUBSTRING(col2, 1, 2)");
114+
}
111115
}

src/test/java/net/sf/jsqlparser/util/SelectUtilsTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,13 @@ public void testTableAliasIssue311() {
122122
assertEquals("SELECT tab1.col1, tab1.col2, tab1.col3, tab2.b1, tab2.b2 FROM mytable1 AS tab1 LEFT JOIN mytable2 AS tab2 ON tab1.col1 = tab2.b1",
123123
select.toString());
124124
}
125+
126+
public void testTableAliasIssue311_2() {
127+
Table table1 = new Table("mytable1");
128+
table1.setAlias(new Alias("tab1"));
129+
130+
Column col = new Column(table1, "col1");
131+
assertEquals("tab1.col1", col.toString());
132+
assertEquals("mytable.col1", col.getFullyQualifiedName());
133+
}
125134
}

0 commit comments

Comments
 (0)