private TempMetadataStore resolveEmbeddedCommand(TempMetadataAdapter metadata, GroupContext groupContext, Command cmd) throws TeiidComponentException, QueryResolverException { QueryResolver.setChildMetadata(cmd, metadata.getMetadataStore(), groupContext); return QueryResolver.resolveCommand(cmd, metadata.getMetadata()); }
private TempMetadataStore resolveEmbeddedCommand(TempMetadataAdapter metadata, GroupContext groupContext, Command cmd) throws TeiidComponentException, QueryResolverException { QueryResolver.setChildMetadata(cmd, metadata.getMetadataStore(), groupContext); return QueryResolver.resolveCommand(cmd, metadata.getMetadata()); }
private TempMetadataStore resolveEmbeddedCommand(TempMetadataAdapter metadata, GroupContext groupContext, Command cmd) throws TeiidComponentException, QueryResolverException { QueryResolver.setChildMetadata(cmd, metadata.getMetadataStore(), groupContext); return QueryResolver.resolveCommand(cmd, metadata.getMetadata()); }
public static void resolveImplicitTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List symbols) throws TeiidComponentException, QueryResolverException { if (symbol.isImplicitTempGroupSymbol()) { if (metadata.getMetadataStore().getTempElementElementIDs(symbol.getName())==null) { addTempGroup(metadata, symbol, symbols, true); } ResolverUtil.resolveGroup(symbol, metadata); } }
public static TempMetadataID addTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List<? extends Expression> symbols, boolean tempTable) throws QueryResolverException { Set<String> names = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); for (Expression ses : symbols) { if (!names.add(Symbol.getShortName(ses))) { throw new QueryResolverException(QueryPlugin.Event.TEIID30091, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30091, symbol, Symbol.getShortName(ses))); } } if (tempTable) { resolveNullLiterals(symbols); } TempMetadataStore store = metadata.getMetadataStore(); return store.addTempGroup(symbol.getName(), symbols, !tempTable, tempTable); }
public static TempMetadataID addTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List<? extends Expression> symbols, boolean tempTable) throws QueryResolverException { Set<String> names = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); for (Expression ses : symbols) { if (!names.add(Symbol.getShortName(ses))) { throw new QueryResolverException(QueryPlugin.Event.TEIID30091, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30091, symbol, Symbol.getShortName(ses))); } } if (tempTable) { resolveNullLiterals(symbols); } TempMetadataStore store = metadata.getMetadataStore(); return store.addTempGroup(symbol.getName(), symbols, !tempTable, tempTable); }
public static TempMetadataID addTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List<? extends Expression> symbols, boolean tempTable) throws QueryResolverException { Set<String> names = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); for (Expression ses : symbols) { if (!names.add(Symbol.getShortName(ses))) { throw new QueryResolverException(QueryPlugin.Event.TEIID30091, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30091, symbol, Symbol.getShortName(ses))); } } if (tempTable) { resolveNullLiterals(symbols); } TempMetadataStore store = metadata.getMetadataStore(); return store.addTempGroup(symbol.getName(), symbols, !tempTable, tempTable); }
public static void resolveImplicitTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List symbols) throws TeiidComponentException, QueryResolverException { if (symbol.isImplicitTempGroupSymbol()) { if (metadata.getMetadataStore().getTempElementElementIDs(symbol.getName())==null) { addTempGroup(metadata, symbol, symbols, true); } ResolverUtil.resolveGroup(symbol, metadata); } }
public static void resolveImplicitTempGroup(TempMetadataAdapter metadata, GroupSymbol symbol, List symbols) throws TeiidComponentException, QueryResolverException { if (symbol.isImplicitTempGroupSymbol()) { if (metadata.getMetadataStore().getTempElementElementIDs(symbol.getName())==null) { addTempGroup(metadata, symbol, symbols, true); } ResolverUtil.resolveGroup(symbol, metadata); } }
private void isValidGroup(TempMetadataAdapter metadata, String groupName) throws QueryResolverException { if (metadata.getMetadataStore().getTempGroupID(groupName) != null) { throw new QueryResolverException(QueryPlugin.Event.TEIID30124, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30124, groupName)); } //check - cursor name should not start with # if(GroupSymbol.isTempGroupName(groupName)){ throw new QueryResolverException(QueryPlugin.Event.TEIID30125, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30125, groupName)); } }
private void isValidGroup(TempMetadataAdapter metadata, String groupName) throws QueryResolverException { if (metadata.getMetadataStore().getTempGroupID(groupName) != null) { throw new QueryResolverException(QueryPlugin.Event.TEIID30124, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30124, groupName)); } //check - cursor name should not start with # if(GroupSymbol.isTempGroupName(groupName)){ throw new QueryResolverException(QueryPlugin.Event.TEIID30125, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30125, groupName)); } }
private void isValidGroup(TempMetadataAdapter metadata, String groupName) throws QueryResolverException { if (metadata.getMetadataStore().getTempGroupID(groupName) != null) { throw new QueryResolverException(QueryPlugin.Event.TEIID30124, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30124, groupName)); } //check - cursor name should not start with # if(GroupSymbol.isTempGroupName(groupName)){ throw new QueryResolverException(QueryPlugin.Event.TEIID30125, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30125, groupName)); } }
/** * @see org.teiid.query.resolver.ProcedureContainerResolver#resolveGroup(org.teiid.query.metadata.TempMetadataAdapter, org.teiid.query.sql.lang.ProcedureContainer) */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { try { super.resolveGroup(metadata, procCommand); } catch (QueryResolverException e) { if (!procCommand.getGroup().isImplicitTempGroupSymbol() || metadata.getMetadataStore().getTempGroupID(procCommand.getGroup().getName()) != null) { throw e; } } }
/** * @see org.teiid.query.resolver.ProcedureContainerResolver#resolveGroup(org.teiid.query.metadata.TempMetadataAdapter, org.teiid.query.sql.lang.ProcedureContainer) */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { try { super.resolveGroup(metadata, procCommand); } catch (QueryResolverException e) { if (!procCommand.getGroup().isImplicitTempGroupSymbol() || metadata.getMetadataStore().getTempGroupID(procCommand.getGroup().getName()) != null) { throw e; } } }
/** * @see org.teiid.query.resolver.ProcedureContainerResolver#resolveGroup(org.teiid.query.metadata.TempMetadataAdapter, org.teiid.query.sql.lang.ProcedureContainer) */ protected void resolveGroup(TempMetadataAdapter metadata, ProcedureContainer procCommand) throws TeiidComponentException, QueryResolverException { try { super.resolveGroup(metadata, procCommand); } catch (QueryResolverException e) { if (!procCommand.getGroup().isImplicitTempGroupSymbol() || metadata.getMetadataStore().getTempGroupID(procCommand.getGroup().getName()) != null) { throw e; } } }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral()) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral()) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }
public void visit(SubqueryFromClause obj) { Collection<GroupSymbol> externalGroups = this.currentGroups; if (obj.isLateral() && allowImplicit) { externalGroups = new ArrayList<GroupSymbol>(externalGroups); externalGroups.addAll(this.implicitGroups); } resolveSubQuery(obj, externalGroups); discoveredGroup(obj.getGroupSymbol()); try { ResolverUtil.addTempGroup(metadata, obj.getGroupSymbol(), obj.getCommand().getProjectedSymbols(), false); } catch (QueryResolverException err) { throw new TeiidRuntimeException(err); } obj.getGroupSymbol().setMetadataID(metadata.getMetadataStore().getTempGroupID(obj.getGroupSymbol().getName())); }
/** * @see org.teiid.query.resolver.CommandResolver#resolveCommand(org.teiid.query.sql.lang.Command, TempMetadataAdapter, boolean) */ public void resolveCommand(Command command, TempMetadataAdapter metadata, boolean resolveNullLiterals) throws QueryMetadataException, QueryResolverException, TeiidComponentException { //by creating a new group context here it means that variables will resolve with a higher precedence than input/changing GroupContext externalGroups = command.getExternalGroupContexts(); List<ElementSymbol> symbols = new LinkedList<ElementSymbol>(); String countVar = ProcedureReservedWords.VARIABLES + Symbol.SEPARATOR + ProcedureReservedWords.ROWCOUNT; ElementSymbol updateCount = new ElementSymbol(countVar); updateCount.setType(DataTypeManager.DefaultDataClasses.INTEGER); symbols.add(updateCount); ProcedureContainerResolver.addScalarGroup(ProcedureReservedWords.VARIABLES, metadata.getMetadataStore(), externalGroups, symbols); if (command instanceof TriggerAction) { TriggerAction ta = (TriggerAction)command; CreateProcedureCommand cmd = new CreateProcedureCommand(ta.getBlock()); cmd.setVirtualGroup(ta.getView()); //TODO: this is not generally correct - we should update the api to set the appropriate type cmd.setUpdateType(Command.TYPE_INSERT); resolveBlock(cmd, ta.getBlock(), ta.getExternalGroupContexts(), metadata); return; } CreateProcedureCommand procCommand = (CreateProcedureCommand) command; resolveBlock(procCommand, procCommand.getBlock(), externalGroups, metadata); }
/** * @see org.teiid.query.resolver.CommandResolver#resolveCommand(org.teiid.query.sql.lang.Command, TempMetadataAdapter, boolean) */ public void resolveCommand(Command command, TempMetadataAdapter metadata, boolean resolveNullLiterals) throws QueryMetadataException, QueryResolverException, TeiidComponentException { //by creating a new group context here it means that variables will resolve with a higher precedence than input/changing GroupContext externalGroups = command.getExternalGroupContexts(); List<ElementSymbol> symbols = new LinkedList<ElementSymbol>(); String countVar = ProcedureReservedWords.VARIABLES + Symbol.SEPARATOR + ProcedureReservedWords.ROWCOUNT; ElementSymbol updateCount = new ElementSymbol(countVar); updateCount.setType(DataTypeManager.DefaultDataClasses.INTEGER); symbols.add(updateCount); ProcedureContainerResolver.addScalarGroup(ProcedureReservedWords.VARIABLES, metadata.getMetadataStore(), externalGroups, symbols); if (command instanceof TriggerAction) { TriggerAction ta = (TriggerAction)command; CreateProcedureCommand cmd = new CreateProcedureCommand(ta.getBlock()); cmd.setVirtualGroup(ta.getView()); //TODO: this is not generally correct - we should update the api to set the appropriate type cmd.setUpdateType(Command.TYPE_INSERT); resolveBlock(cmd, ta.getBlock(), ta.getExternalGroupContexts(), metadata); return; } CreateProcedureCommand procCommand = (CreateProcedureCommand) command; resolveBlock(procCommand, procCommand.getBlock(), externalGroups, metadata); }