/** * @param metadata * @param procCommand * @throws TeiidComponentException * @throws QueryResolverException */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { // Resolve group so we can tell whether it is an update procedure GroupSymbol group = procCommand.getGroup(); ResolverUtil.resolveGroup(group, metadata); if (!group.isTempTable()) { procCommand.setUpdateInfo(ProcedureContainerResolver.getUpdateInfo(group, metadata, procCommand.getType(), false)); } }
/** * @param metadata * @param procCommand * @throws TeiidComponentException * @throws QueryResolverException */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { // Resolve group so we can tell whether it is an update procedure GroupSymbol group = procCommand.getGroup(); ResolverUtil.resolveGroup(group, metadata); if (!group.isTempTable()) { procCommand.setUpdateInfo(ProcedureContainerResolver.getUpdateInfo(group, metadata, procCommand.getType(), false)); } }
/** * @param metadata * @param procCommand * @throws TeiidComponentException * @throws QueryResolverException */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { // Resolve group so we can tell whether it is an update procedure GroupSymbol group = procCommand.getGroup(); ResolverUtil.resolveGroup(group, metadata); if (!group.isTempTable()) { procCommand.setUpdateInfo(ProcedureContainerResolver.getUpdateInfo(group, metadata, procCommand.getType(), false)); } }
if (!col.getGroupSymbol().isTempTable() && this.processor.getContext().getMetadata().isVirtualGroup(col.getGroupSymbol().getMetadataID())) { if (keyCols.size() != 1 && ((Insert)originalCommand).getUpdateInfo().isInherentInsert()) {
if (!col.getGroupSymbol().isTempTable() && this.processor.getContext().getMetadata().isVirtualGroup(col.getGroupSymbol().getMetadataID())) { if (keyCols.size() != 1 && ((Insert)originalCommand).getUpdateInfo().isInherentInsert()) {
private void resolveSubQuery(SubqueryContainer<?> obj, Collection<GroupSymbol> externalGroups) { Command command = obj.getCommand(); QueryResolver.setChildMetadata(command, query); command.pushNewResolvingContext(externalGroups); for (GroupSymbol gs : externalGroups) { //subquery from clauses are not valid for resolving against //and they are not caught by later validation like scalar groups //we can directly remove as each command has a copy of the known temp groups if (!gs.isTempTable()) { command.getTemporaryMetadata().removeTempGroup(gs.getName()); } } try { QueryResolver.resolveCommand(command, metadata.getMetadata(), false); } catch (TeiidException err) { throw new TeiidRuntimeException(err); } }
private void resolveSubQuery(SubqueryContainer<?> obj, Collection<GroupSymbol> externalGroups) { Command command = obj.getCommand(); QueryResolver.setChildMetadata(command, query); command.pushNewResolvingContext(externalGroups); for (GroupSymbol gs : externalGroups) { //subquery from clauses are not valid for resolving against //and they are not caught by later validation like scalar groups //we can directly remove as each command has a copy of the known temp groups if (!gs.isTempTable()) { command.getTemporaryMetadata().removeTempGroup(gs.getName()); } } try { QueryResolver.resolveCommand(command, metadata.getMetadata(), false); } catch (TeiidException err) { throw new TeiidRuntimeException(err); } }
private String getPlan(QueryMetadataInterface metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryMetadataException, QueryResolverException { if(!procCommand.getGroup().isTempTable() && metadata.isVirtualGroup(procCommand.getGroup().getMetadataID())) { String plan = getPlan(metadata, procCommand.getGroup()); if (plan == null && !metadata.isProcedure(procCommand.getGroup().getMetadataID())) { int type = procCommand.getType(); //force validation getUpdateInfo(procCommand.getGroup(), metadata, type, true); } return plan; } return null; }
private String getPlan(QueryMetadataInterface metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryMetadataException, QueryResolverException { if(!procCommand.getGroup().isTempTable() && metadata.isVirtualGroup(procCommand.getGroup().getMetadataID())) { String plan = getPlan(metadata, procCommand.getGroup()); if (plan == null && !metadata.isProcedure(procCommand.getGroup().getMetadataID())) { int type = procCommand.getType(); //force validation getUpdateInfo(procCommand.getGroup(), metadata, type, true); } return plan; } return null; }
private String getPlan(QueryMetadataInterface metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryMetadataException, QueryResolverException { if(!procCommand.getGroup().isTempTable() && metadata.isVirtualGroup(procCommand.getGroup().getMetadataID())) { String plan = getPlan(metadata, procCommand.getGroup()); if (plan == null && !metadata.isProcedure(procCommand.getGroup().getMetadataID())) { int type = procCommand.getType(); //force validation getUpdateInfo(procCommand.getGroup(), metadata, type, true); } return plan; } return null; }
addToNameMap(((TempMetadataID)metadataID).getOriginalMetadataID(), symbol, procMap, getMetadata()); validateEntitlements(PermissionType.EXECUTE, auditContext, procMap); } else if (group.isTempTable() && group.isImplicitTempGroupSymbol()) { validateTemp(actionCode, group.getNonCorrelationName(), false, group, auditContext);
addToNameMap(((TempMetadataID)metadataID).getOriginalMetadataID(), symbol, procMap, getMetadata()); validateEntitlements(PermissionType.EXECUTE, auditContext, procMap); } else if (group.isTempTable() && group.isImplicitTempGroupSymbol()) { validateTemp(actionCode, group.getNonCorrelationName(), false, group, auditContext);
addToNameMap(((TempMetadataID)metadataID).getOriginalMetadataID(), symbol, procMap, getMetadata()); validateEntitlements(PermissionType.EXECUTE, auditContext, procMap); } else if (group.isTempTable() && group.isImplicitTempGroupSymbol()) { validateTemp(actionCode, group.getNonCorrelationName(), false, group, auditContext);
/** * @see org.teiid.query.sql.LanguageVisitor#visit(org.teiid.query.sql.lang.Drop) */ public void visit(Drop drop) { if (!drop.getTable().isTempTable()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_nontemptable", drop.getTable()), drop); //$NON-NLS-1$ } try { if (getMetadata().isVirtualGroup(drop.getTable().getMetadataID())) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_globaltemptable", drop.getTable()), drop); //$NON-NLS-1$ } } catch (QueryMetadataException e) { handleException(e); } catch (TeiidComponentException e) { handleException(e); } }
/** * @see org.teiid.query.sql.LanguageVisitor#visit(org.teiid.query.sql.lang.Drop) */ public void visit(Drop drop) { if (!drop.getTable().isTempTable()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_nontemptable", drop.getTable()), drop); //$NON-NLS-1$ } try { if (getMetadata().isVirtualGroup(drop.getTable().getMetadataID())) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_globaltemptable", drop.getTable()), drop); //$NON-NLS-1$ } } catch (QueryMetadataException e) { handleException(e); } catch (TeiidComponentException e) { handleException(e); } }
/** * @see org.teiid.query.sql.LanguageVisitor#visit(org.teiid.query.sql.lang.Drop) */ public void visit(Drop drop) { if (!drop.getTable().isTempTable()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_nontemptable", drop.getTable()), drop); //$NON-NLS-1$ } try { if (getMetadata().isVirtualGroup(drop.getTable().getMetadataID())) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.drop_of_globaltemptable", drop.getTable()), drop); //$NON-NLS-1$ } } catch (QueryMetadataException e) { handleException(e); } catch (TeiidComponentException e) { handleException(e); } }
@Test public void testTableAliasWithPeriod() throws Exception { String sql = "select \"pm1.g2\".*, e1, \"pm1.g2\".e2, pm1.g2.e2 from pm1.g1 as \"pm1.g2\""; Query query = (Query)helpResolve(sql); UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0); GroupSymbol gs = ufc.getGroup(); assertEquals("pm1.g2", gs.getName()); assertEquals("pm1.g1", gs.getDefinition()); assertFalse(gs.isTempTable()); assertEquals("SELECT \"pm1.g2\".*, e1, \"pm1.g2\".e2, \"pm1.g2\".e2 FROM pm1.g1 AS \"pm1.g2\"", query.toString()); assertEquals("[\"pm1.g2\".e1, \"pm1.g2\".e2, \"pm1.g2\".e3, \"pm1.g2\".e4, e1, \"pm1.g2\".e2, \"pm1.g2\".e2]", query.getProjectedSymbols().toString()); }
TeiidComponentException { boolean isSourceTemp = c == null && container.getGroup().isTempTable() && metadata.getModelID(container.getGroup().getMetadataID()) == TempMetadataAdapter.TEMP_MODEL;
TeiidComponentException { boolean isSourceTemp = c == null && container.getGroup().isTempTable() && metadata.getModelID(container.getGroup().getMetadataID()) == TempMetadataAdapter.TEMP_MODEL;
TeiidComponentException { boolean isSourceTemp = c == null && container.getGroup().isTempTable() && metadata.getModelID(container.getGroup().getMetadataID()) == TempMetadataAdapter.TEMP_MODEL;