@Override public Void visit(ColumnParseNode node) throws SQLException { // Inner query column definitions should shade those of outer query. try { localResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(true); return null; } catch (TableNotFoundException e) { } catch (ColumnNotFoundException e) { } catch (ColumnFamilyNotFoundException e) { } outerResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(false); return null; }
@Override public Void visit(ColumnParseNode node) throws SQLException { ColumnRef ref = context.getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); boolean isAggregateColumn = groupBy.getExpressions().indexOf(ref.newColumnExpression(node.isTableNameCaseSensitive(), node.isCaseSensitive())) >= 0; if (hasOnlyAggregateColumns == null) { hasOnlyAggregateColumns = isAggregateColumn; } else { hasOnlyAggregateColumns &= isAggregateColumn; } return null; }
ColumnRef ref = resolver.resolveColumn(this.getSchemaName(), this.getTableName(), this.getName()); PColumn column = ref.getColumn(); if (!SchemaUtil.isPKColumn(column)) {
private static void projectTableColumnFamily(StatementContext context, String cfName, TableRef tableRef, boolean resolveColumn, List<Expression> projectedExpressions, List<ExpressionProjector> projectedColumns) throws SQLException { PTable table = tableRef.getTable(); PColumnFamily pfamily = table.getColumnFamily(cfName); for (PColumn column : pfamily.getColumns()) { ColumnRef ref = new ColumnRef(tableRef, column.getPosition()); if (resolveColumn) { ref = context.getResolver().resolveColumn(table.getTableName().getString(), cfName, column.getName().getString()); } Expression expression = ref.newColumnExpression(); projectedExpressions.add(expression); String colName = column.getName().toString(); boolean isCaseSensitive = !SchemaUtil.normalizeIdentifier(colName).equals(colName); projectedColumns.add(new ExpressionProjector(colName, tableRef.getTableAlias() == null ? table.getName().getString() : tableRef.getTableAlias(), expression, isCaseSensitive)); } }
@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 Void visit(ColumnParseNode node) throws SQLException { try { ColumnRef resolveColumn = context.getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); if (!SchemaUtil.isPKColumn(resolveColumn.getColumn())) { nonPkColumnRefSet.add(resolveColumn); } } catch (ColumnNotFoundException e) { if (context.getCurrentTable().getTable().getIndexType() == IndexType.LOCAL) { try { localIndexColumnRefSet.add(new LocalIndexDataColumnRef(context, context.getCurrentTable(), node.getName())); } catch (ColumnFamilyNotFoundException c) { throw e; } } else { throw e; } } return null; } }
try { if (tableAlias != null) { ref = resolver.resolveColumn(null, tableAlias, colName); } else { String schemaName = table.getSchemaName().getString(); ref = resolver.resolveColumn(schemaName.length() == 0 ? null : schemaName, table.getTableName().getString(), colName); ref = resolver.resolveColumn(tableAlias != null ? tableAlias : table.getTableName().getString(), column.getFamilyName().getString(), colName); } else { throw e;
try { if (tableAlias != null) { ref = resolver.resolveColumn(null, tableAlias, indexColName); } else { String schemaName = index.getSchemaName().getString(); ref = resolver.resolveColumn(schemaName.length() == 0 ? null : schemaName, index.getTableName().getString(), indexColName); ref = resolver.resolveColumn(tableAlias != null ? tableAlias : index.getTableName().getString(), indexColumn.getFamilyName().getString(), indexColName); } else { throw e;
ColumnRef columnRef = null; try { columnRef = resolver.resolveColumn(null, column.getFamilyName(), column.getColumnName()); } catch (ColumnNotFoundException e) { if (statement.ifExists()) {
@Override public Void visit(ColumnParseNode node) throws SQLException { ColumnRef columnRef = null; try { columnRef = resolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); } catch (ColumnNotFoundException e) { // This could be a LocalIndexDataColumnRef. If so, the table name must have // been appended by the IndexStatementRewriter, and we can convert it into. TableRef tableRef = resolver.resolveTable(node.getSchemaName(), node.getTableName()); if (tableRef.getTable().getIndexType() == IndexType.LOCAL) { TableRef parentTableRef = FromCompiler.getResolver( NODE_FACTORY.namedTable(null, TableName.create(tableRef.getTable() .getSchemaName().getString(), tableRef.getTable() .getParentTableName().getString())), connection).resolveTable( tableRef.getTable().getSchemaName().getString(), tableRef.getTable().getParentTableName().getString()); columnRef = new LocalIndexColumnRef(parentTableRef, IndexUtil.getDataColumnFamilyName(node.getName()), IndexUtil.getDataColumnName(node.getName()), tableRef); } else { throw e; } } columnRefMap.put(columnRef, node); tableRefSet.add(columnRef.getTableRef()); return null; }
ColumnRef ref = resolver.resolveColumn(null, colName.getFamilyName(), colName.getColumnName()); PColumn column = ref.getColumn(); if (IndexUtil.getViewConstantValue(column, ptr)) { for (Pair<ColumnName,ParseNode> columnPair : onDupKeyPairs) { ColumnName colName = columnPair.getFirst(); PColumn updateColumn = resolver.resolveColumn(null, colName.getFamilyName(), colName.getColumnName()).getColumn(); if (SchemaUtil.isPKColumn(updateColumn)) { throw new SQLExceptionInfo.Builder(SQLExceptionCode.CANNOT_UPDATE_PK_ON_DUP_KEY)
ref = context.getResolver().resolveColumn(index.getTableName().getString(), indexColumnFamily, indexColName);
PColumn col = resolver.resolveColumn(null, colName.getFamilyName(), colName.getColumnName()).getColumn(); colName = ColumnName.caseSensitiveColumnName(IndexUtil.getIndexColumnName(col));
@Override public ParseNode visit(ColumnParseNode node) throws SQLException { ColumnRef dataColRef = getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); PColumn dataCol = dataColRef.getColumn(); TableRef dataTableRef = dataColRef.getTableRef();
ColumnRef ref = null; try { ref = context.getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); } catch (ColumnNotFoundException e) {
@Override public Void visit(ColumnParseNode node) throws SQLException { // Inner query column definitions should shade those of outer query. try { localResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(true); return null; } catch (TableNotFoundException e) { } catch (ColumnNotFoundException e) { } catch (ColumnFamilyNotFoundException e) { } outerResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(false); return null; }
@Override public Void visit(ColumnParseNode node) throws SQLException { // Inner query column definitions should shade those of outer query. try { localResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(true); return null; } catch (TableNotFoundException e) { } catch (ColumnNotFoundException e) { } catch (ColumnFamilyNotFoundException e) { } outerResolver.resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); addType(false); return null; }
@Override public Void visit(ColumnParseNode node) throws SQLException { ColumnRef ref = context.getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); boolean isAggregateColumn = groupBy.getExpressions().indexOf(ref.newColumnExpression(node.isTableNameCaseSensitive(), node.isCaseSensitive())) >= 0; if (hasOnlyAggregateColumns == null) { hasOnlyAggregateColumns = isAggregateColumn; } else { hasOnlyAggregateColumns &= isAggregateColumn; } return null; }
@Override public Void visit(ColumnParseNode node) throws SQLException { ColumnRef ref = context.getResolver().resolveColumn(node.getSchemaName(), node.getTableName(), node.getName()); boolean isAggregateColumn = groupBy.getExpressions().indexOf(ref.newColumnExpression(node.isTableNameCaseSensitive(), node.isCaseSensitive())) >= 0; if (hasOnlyAggregateColumns == null) { hasOnlyAggregateColumns = isAggregateColumn; } else { hasOnlyAggregateColumns &= isAggregateColumn; } return null; }
private static void projectTableColumnFamily(StatementContext context, String cfName, TableRef tableRef, boolean resolveColumn, List<Expression> projectedExpressions, List<ExpressionProjector> projectedColumns) throws SQLException { PTable table = tableRef.getTable(); PColumnFamily pfamily = table.getColumnFamily(cfName); for (PColumn column : pfamily.getColumns()) { ColumnRef ref = new ColumnRef(tableRef, column.getPosition()); if (resolveColumn) { ref = context.getResolver().resolveColumn(table.getTableName().getString(), cfName, column.getName().getString()); } Expression expression = ref.newColumnExpression(); projectedExpressions.add(expression); String colName = column.getName().toString(); boolean isCaseSensitive = !SchemaUtil.normalizeIdentifier(colName).equals(colName); projectedColumns.add(new ExpressionProjector(colName, tableRef.getTableAlias() == null ? table.getName().getString() : tableRef.getTableAlias(), expression, isCaseSensitive)); } }