From 7d94935a9a552cc8072086d73d237160c39bc1ad Mon Sep 17 00:00:00 2001 From: Pavel Bekkerman Date: Thu, 15 Mar 2018 20:08:30 +0200 Subject: [PATCH] Fixed: column names in INSERT statement should be simple, not FQN. --- .../java/net/sf/jsqlparser/schema/Column.java | 36 +++++++++++++------ .../jsqlparser/statement/insert/Insert.java | 8 ++++- .../util/deparser/SelectDeParser.java | 2 +- 3 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/schema/Column.java b/src/main/java/net/sf/jsqlparser/schema/Column.java index 4b343c303..c8d9efa8c 100644 --- a/src/main/java/net/sf/jsqlparser/schema/Column.java +++ b/src/main/java/net/sf/jsqlparser/schema/Column.java @@ -62,34 +62,48 @@ public void setColumnName(String string) { @Override public String getFullyQualifiedName() { - return getName(false); + return getFullyQualifiedName(false); } /** - * Get name with out without using aliases. - * - * @param aliases + * Get FQN. + * @param aliases - use aliases. * @return */ - public String getName(boolean aliases) { + public String getFullyQualifiedName(boolean aliases) { StringBuilder fqn = new StringBuilder(); if (table != null) { - if (table.getAlias() != null && aliases) { + if (aliases && table.getAlias() != null) { fqn.append(table.getAlias().getName()); } else { fqn.append(table.getFullyQualifiedName()); } - } - if (fqn.length() > 0) { - fqn.append('.'); + if (fqn.length() > 0) { + fqn.append('.'); + } } if (columnName != null) { - fqn.append(columnName); + fqn.append(getName()); } + return fqn.toString(); } + /** + * Get name. + * @return + */ + public String getName() { + StringBuilder name = new StringBuilder(); + + if (columnName != null) { + name.append(columnName); + } + + return name.toString(); + } + @Override public void accept(ExpressionVisitor expressionVisitor) { expressionVisitor.visit(this); @@ -97,6 +111,6 @@ public void accept(ExpressionVisitor expressionVisitor) { @Override public String toString() { - return getName(true); + return getFullyQualifiedName(); } } diff --git a/src/main/java/net/sf/jsqlparser/statement/insert/Insert.java b/src/main/java/net/sf/jsqlparser/statement/insert/Insert.java index ad312b433..218744599 100644 --- a/src/main/java/net/sf/jsqlparser/statement/insert/Insert.java +++ b/src/main/java/net/sf/jsqlparser/statement/insert/Insert.java @@ -23,6 +23,8 @@ import java.util.List; +import com.google.common.collect.Lists; + import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.operators.relational.ItemsList; import net.sf.jsqlparser.schema.Column; @@ -218,7 +220,11 @@ public String toString() { sql.append("INTO "); sql.append(table).append(" "); if (columns != null) { - sql.append(PlainSelect.getStringList(columns, true, true)).append(" "); + List simpleNamedColumns = Lists.newArrayListWithCapacity(columns.size()); + for (Column column : columns) { + simpleNamedColumns.add(column.getName()); + } + sql.append(PlainSelect.getStringList(simpleNamedColumns, true, true)).append(" "); } if (useValues) { diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java index a1278df6f..5d8eb05aa 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java @@ -378,7 +378,7 @@ public void deparseJoin(Join join) { buffer.append(" USING ("); for (Iterator iterator = join.getUsingColumns().iterator(); iterator.hasNext();) { Column column = iterator.next(); - buffer.append(column.toString()); + buffer.append(column.getFullyQualifiedName()); if (iterator.hasNext()) { buffer.append(", "); }