@Override public String visit(ExpColumnReference col) throws Exception { String tableAlias = col.getTable(); if (tableAlias == null && isKeyword(col.getName())) { tableAlias = tableName; } if (tableAlias == null) { return quoteIdentifier(col.getName()); } else { return format("%s.%s", quoteIdentifier(tableAlias), quoteIdentifier(col.getName())); } }
/** * quote the identifier if it is a: * - doesn't start with a character, * - contains non-alphanumeric characters or * - is a reserved keyword * @param id * @return */ public static String quoteIdentifier(final String id) { if (id.isEmpty()) { return id; } if (isKeyword(id)) { return quoteString(id); } if (Character.isAlphabetic(id.charAt(0)) && ALPHANUM_MATCHER.matchesAllOf(id)) { return id; } // Special case if (NEWLINE_MATCHER.matchesAnyOf(id)) { return quoteUnicodeString(id); } return quoteString(id); }