diff --git a/src/main/java/net/sf/jsqlparser/schema/Column.java b/src/main/java/net/sf/jsqlparser/schema/Column.java index b14c1d03f..55b5a31a9 100644 --- a/src/main/java/net/sf/jsqlparser/schema/Column.java +++ b/src/main/java/net/sf/jsqlparser/schema/Column.java @@ -159,7 +159,8 @@ public T accept(ExpressionVisitor expressionVisitor, S context) { @Override public String toString() { - return getFullyQualifiedName(true); + return getFullyQualifiedName(true) + + (commentText != null ? " /* " + commentText + "*/ " : ""); } public Column withTable(Table table) { diff --git a/src/main/java/net/sf/jsqlparser/schema/Table.java b/src/main/java/net/sf/jsqlparser/schema/Table.java index dd9f5a6b2..1ee42a923 100644 --- a/src/main/java/net/sf/jsqlparser/schema/Table.java +++ b/src/main/java/net/sf/jsqlparser/schema/Table.java @@ -194,6 +194,14 @@ private String getIndex(int idx) { public String getFullyQualifiedName() { StringBuilder fqn = new StringBuilder(); + // remove any leading empty items + // only middle items can be suppressed (e.g. dbo..MY_TABLE ) + while (!partItems.isEmpty() && (partItems.get(partItems.size() - 1) == null + || partItems.get(partItems.size() - 1).isEmpty())) { + partItems.remove(partItems.size() - 1); + } + + for (int i = partItems.size() - 1; i >= 0; i--) { String part = partItems.get(i); if (part == null) { diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java index a91b77dea..65ea93489 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/ExpressionDeParser.java @@ -787,6 +787,11 @@ public StringBuilder visit(Column tableColumn, S context) { if (tableColumn.getArrayConstructor() != null) { tableColumn.getArrayConstructor().accept(this, context); } + + if (tableColumn.getCommentText() != null) { + buffer.append(" /* ").append(tableColumn.getCommentText()).append("*/ "); + } + return buffer; }