@Override public HashSet<Table> getTables() { HashSet<Table> set = new HashSet<>(); for (TableFilter filter : filters) { set.add(filter.getTable()); } return set; }
private int expandColumnList(TableFilter filter, int index) { Table t = filter.getTable(); String alias = filter.getTableAlias(); Column[] columns = t.getColumns(); for (Column c : columns) { if (!c.getVisible()) { continue; } if (filter.isNaturalJoinColumn(c)) { continue; } String name = filter.getDerivedColumnName(c); ExpressionColumn ec = new ExpressionColumn( session.getDatabase(), null, alias, name != null ? name : c.getName()); expressions.add(index++, ec); } return index; }
@Override public void fireBeforeSelectTriggers() { for (TableFilter filter : filters) { filter.getTable().fire(session, Trigger.SELECT, true); } }
/** * @param qry Query. */ private void collectOptimizedTableFiltersOrder(Query qry) { if (qry instanceof SelectUnion) { collectOptimizedTableFiltersOrder(((SelectUnion)qry).getLeft()); collectOptimizedTableFiltersOrder(((SelectUnion)qry).getRight()); } else { Select select = (Select)qry; TableFilter filter = select.getTopTableFilter(); int i = 0; do { assert0(filter != null, select); assert0(filter.getNestedJoin() == null, select); // Here all the table filters must have generated unique aliases, // thus we can store them in the same map for all the subqueries. optimizedTableFilterOrder.put(filter.getTableAlias(), i++); Table tbl = filter.getTable(); // Go down and collect inside of optimized subqueries. if (tbl instanceof TableView) { ViewIndex viewIdx = (ViewIndex)filter.getIndex(); collectOptimizedTableFiltersOrder(viewIdx.getQuery()); } filter = filter.getJoin(); } while (filter != null); } }
public void setTargetTableFilter(TableFilter targetTableFilter) { this.targetTableFilter = targetTableFilter; setTargetTable(targetTableFilter.getTable()); }
Row getNullRow() { return filter.getTable().getNullRow(); }
private HashSet<Column> buildColumnListFromOnCondition( TableFilter anyTableFilter) { HashSet<Column> filteredColumns = new HashSet<>(); HashSet<Column> columns = new HashSet<>(); ExpressionVisitor visitor = ExpressionVisitor .getColumnsVisitor(columns); onCondition.isEverything(visitor); for (Column c : columns) { if (c != null && c.getTable() == anyTableFilter.getTable()) { filteredColumns.add(c); } } return filteredColumns; }
/** * @param stmt Prepared. * @return Target table. */ @NotNull public static GridH2Table dmlTable(@NotNull Prepared stmt) { Table table; if (stmt.getClass() == Insert.class) table = INSERT_TABLE.get((Insert)stmt); else if (stmt.getClass() == Merge.class) table = MERGE_TABLE.get((Merge)stmt); else if (stmt.getClass() == Delete.class) table = DELETE_FROM.get((Delete)stmt).getTable(); else if (stmt.getClass() == Update.class) table = UPDATE_TARGET.get((Update)stmt).getTable(); else throw new IgniteException("Unsupported statement: " + stmt); assert table instanceof GridH2Table : table; return (GridH2Table) table; }
private Index getMinMaxColumnIndex() { if (on instanceof ExpressionColumn) { ExpressionColumn col = (ExpressionColumn) on; Column column = col.getColumn(); TableFilter filter = col.getTableFilter(); if (filter != null) { Table table = filter.getTable(); return table.getIndexForColumn(column, true, false); } } return null; }
"duplicate _ROWID_ target record already updated, deleted or inserted:_ROWID_=" + targetRowIdValue[0].toString() + ":in:" + targetTableFilter.getTable() + ":conflicting source row number:" + targetRowidsRemembered + " rows at once, only 1 expected:_ROWID_=" + targetRowIdValue[0].toString() + ":in:" + targetTableFilter.getTable() + ":conflicting source row number:" + targetRowidsRemembered.get(targetRowIdValue[0]));
/** * @param filter Filter. */ private GridSqlElement parseTableFilter(TableFilter filter) { GridSqlElement res = (GridSqlElement)h2ObjToGridObj.get(filter); if (res == null) { res = parseTable(filter.getTable()); // Setup index hints. if (res instanceof GridSqlTable && filter.getIndexHints() != null) ((GridSqlTable)res).useIndexes(new ArrayList<>(filter.getIndexHints().getAllowedIndexes())); String alias = ALIAS.get(filter); if (alias != null) res = new GridSqlAlias(alias, res, false); h2ObjToGridObj.put(filter, res); } return res; }
private Index getGroupSortedIndex() { if (groupIndex == null || groupByExpression == null) { return null; } ArrayList<Index> indexes = topTableFilter.getTable().getIndexes(); if (indexes != null) { for (Index index : indexes) { if (index.getIndexType().isScan()) { continue; } if (index.getIndexType().isHash()) { // does not allow scanning entries continue; } if (isGroupSortedIndex(topTableFilter, index)) { return index; } } } return null; }
TableFilter filter = col.getTableFilter(); if (filter != null) { Table table = filter.getTable(); ArrayList<Index> indexes = table.getIndexes(); Index result = null;
/** * @param i Index. * @param create Create child if needed. * @return Child collocation. */ private CollocationModel child(int i, boolean create) { CollocationModel child = children[i]; if (child == null && create) { TableFilter f = childFilters[i]; if (f.getTable().isView()) { if (f.getIndex() == null) { // If we don't have view index yet, then we just creating empty model and it must be filled later. child = createChildModel(this, i, null, true, validate); } else child = buildCollocationModel(this, i, getSubQuery(f), null, validate); } else child = createChildModel(this, i, null, false, validate); assert child != null; assert children[i] == child; } return child; }
@Override public void checkExistingData(Session session) { if (session.getDatabase().isStarting()) { // don't check at startup return; } String sql = "SELECT 1 FROM " + filter.getTable().getSQL() + " WHERE NOT(" + expr.getSQL() + ")"; ResultInterface r = session.prepare(sql).query(1); if (r.next()) { throw DbException.get(ErrorCode.CHECK_CONSTRAINT_VIOLATED_1, getName()); } }
private void checkRights() { if (insertCommand != null) { session.getUser().checkRight(targetTable, Right.INSERT); } if (updateCommand != null) { session.getUser().checkRight(targetTable, Right.UPDATE); } if (deleteCommand != null) { session.getUser().checkRight(targetTable, Right.DELETE); } // check the underlying tables session.getUser().checkRight(targetTable, Right.SELECT); session.getUser().checkRight(sourceTableFilter.getTable(), Right.SELECT); }
Value value = found.getValue(columnIndex); if (first == null) { first = topTableFilter.getTable().getTemplateSimpleRow(true);
joinBatch = null; joinFilterId = -1; if (getTable().isView()) { session.pushSubQueryInfo(masks, filters, filter, select.getSortOrder()); try {