@Override public ParseNode visit(ColumnParseNode node) throws SQLException { // If we're resolving aliases and we have an unqualified ColumnParseNode, // check if we find the name in our alias map. if (aliasMap != null && node.getTableName() == null) { ParseNode aliasedNode = aliasMap.get(node.getName()); // If we found something, then try to resolve it unless the two nodes are the same if (aliasedNode != null && !node.equals(aliasedNode)) { ColumnRef ref; try { ref = resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); } catch (ColumnNotFoundException e) { // Not able to resolve alias as a column name as well, so we use the alias return aliasedNode; } // We have resolved it to a column, so now check if the aliased node can be resolved as the same column if (aliasedNode instanceof ColumnParseNode) { ColumnParseNode aliasedColumnNode = (ColumnParseNode) aliasedNode; ColumnRef aliasedRef = resolver.resolveColumn(aliasedColumnNode.getSchemaName(), aliasedColumnNode.getTableName(), aliasedColumnNode.getName()); if (aliasedRef.equals(ref)) { return aliasedNode; } } // Otherwise it means we have a conflict throw new AmbiguousColumnException(node.getName()); } } return node; }
@Override public ParseNode visit(ColumnParseNode node) throws SQLException { // If we're resolving aliases and we have an unqualified ColumnParseNode, // check if we find the name in our alias map. if (aliasMap != null && node.getTableName() == null) { ParseNode aliasedNode = aliasMap.get(node.getName()); // If we found something, then try to resolve it unless the two nodes are the same if (aliasedNode != null && !node.equals(aliasedNode)) { ColumnRef ref; try { ref = resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); } catch (ColumnNotFoundException e) { // Not able to resolve alias as a column name as well, so we use the alias return aliasedNode; } // We have resolved it to a column, so now check if the aliased node can be resolved as the same column if (aliasedNode instanceof ColumnParseNode) { ColumnParseNode aliasedColumnNode = (ColumnParseNode) aliasedNode; ColumnRef aliasedRef = resolver.resolveColumn(aliasedColumnNode.getSchemaName(), aliasedColumnNode.getTableName(), aliasedColumnNode.getName()); if (aliasedRef.equals(ref)) { return aliasedNode; } } // Otherwise it means we have a conflict throw new AmbiguousColumnException(node.getName()); } } return node; }
@Override public ParseNode visit(ColumnParseNode node) throws SQLException { // If we're resolving aliases and we have an unqualified ColumnParseNode, // check if we find the name in our alias map. if (aliasMap != null && node.getTableName() == null) { ParseNode aliasedNode = aliasMap.get(node.getName()); // If we found something, then try to resolve it unless the two nodes are the same if (aliasedNode != null && !node.equals(aliasedNode)) { ColumnRef ref; try { ref = resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); } catch (ColumnNotFoundException e) { // Not able to resolve alias as a column name as well, so we use the alias return aliasedNode; } // We have resolved it to a column, so now check if the aliased node can be resolved as the same column if (aliasedNode instanceof ColumnParseNode) { ColumnParseNode aliasedColumnNode = (ColumnParseNode) aliasedNode; ColumnRef aliasedRef = resolver.resolveColumn(aliasedColumnNode.getSchemaName(), aliasedColumnNode.getTableName(), aliasedColumnNode.getName()); if (aliasedRef.equals(ref)) { return aliasedNode; } } // Otherwise it means we have a conflict throw new AmbiguousColumnException(node.getName()); } } return node; }