org.teiid.query.sql.lang.Query.getFrom()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.3k)|赞(0)|评价(0)|浏览(655)

本文整理了Java中org.teiid.query.sql.lang.Query.getFrom方法的一些代码示例,展示了Query.getFrom的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Query.getFrom方法的具体详情如下:
包路径:org.teiid.query.sql.lang.Query
类名称:Query
方法名:getFrom

Query.getFrom介绍

[英]Get the from clause for the query.
[中]获取查询的from子句。

代码示例

代码示例来源:origin: org.jboss.teiid/teiid-engine

  1. private boolean isSimpleJoin(Query query) {
  2. if (query.getFrom() != null) {
  3. for (FromClause clause : query.getFrom().getClauses()) {
  4. if (RuleCollapseSource.hasOuterJoins(clause)) {
  5. return false;
  6. }
  7. }
  8. }
  9. return true;
  10. }

代码示例来源:origin: teiid/teiid

  1. private boolean isSimpleJoin(Query query) {
  2. if (query.getFrom() != null) {
  3. for (FromClause clause : query.getFrom().getClauses()) {
  4. if (RuleCollapseSource.hasOuterJoins(clause)) {
  5. return false;
  6. }
  7. }
  8. }
  9. return true;
  10. }

代码示例来源:origin: org.teiid/teiid-engine

  1. private boolean isSimpleJoin(Query query) {
  2. if (query.getFrom() != null) {
  3. for (FromClause clause : query.getFrom().getClauses()) {
  4. if (RuleCollapseSource.hasOuterJoins(clause)) {
  5. return false;
  6. }
  7. }
  8. }
  9. return true;
  10. }

代码示例来源:origin: org.jboss.teiid/teiid-engine

  1. @Override
  2. public void visit(Query query) {
  3. //don't allow confusion with deep nesting by removing intermediate groups
  4. List<GroupSymbol> fromGroups = null;
  5. if (query.getFrom() != null) {
  6. fromGroups = query.getFrom().getGroups();
  7. HashMap<GroupSymbol, GroupSymbol> groupMap = new HashMap<GroupSymbol, GroupSymbol>();
  8. for (GroupSymbol g : fromGroups) {
  9. groupMap.put(g, g);
  10. }
  11. visitor.outerGroups.add(groupMap);
  12. }
  13. super.visit(query);
  14. if (fromGroups != null) {
  15. visitor.outerGroups.remove(visitor.outerGroups.size() - 1);
  16. }
  17. }
  18. });

代码示例来源:origin: teiid/teiid

  1. @Override
  2. public void visit(Query query) {
  3. //don't allow confusion with deep nesting by removing intermediate groups
  4. List<GroupSymbol> fromGroups = null;
  5. if (query.getFrom() != null) {
  6. fromGroups = query.getFrom().getGroups();
  7. HashMap<GroupSymbol, GroupSymbol> groupMap = new HashMap<GroupSymbol, GroupSymbol>();
  8. for (GroupSymbol g : fromGroups) {
  9. groupMap.put(g, g);
  10. }
  11. visitor.outerGroups.add(groupMap);
  12. }
  13. super.visit(query);
  14. if (fromGroups != null) {
  15. visitor.outerGroups.remove(visitor.outerGroups.size() - 1);
  16. }
  17. }
  18. });

代码示例来源:origin: org.teiid/teiid-engine

  1. @Override
  2. public void visit(Query query) {
  3. //don't allow confusion with deep nesting by removing intermediate groups
  4. List<GroupSymbol> fromGroups = null;
  5. if (query.getFrom() != null) {
  6. fromGroups = query.getFrom().getGroups();
  7. HashMap<GroupSymbol, GroupSymbol> groupMap = new HashMap<GroupSymbol, GroupSymbol>();
  8. for (GroupSymbol g : fromGroups) {
  9. groupMap.put(g, g);
  10. }
  11. visitor.outerGroups.add(groupMap);
  12. }
  13. super.visit(query);
  14. if (fromGroups != null) {
  15. visitor.outerGroups.remove(visitor.outerGroups.size() - 1);
  16. }
  17. }
  18. });

代码示例来源:origin: org.jboss.teiid/teiid-engine

  1. private Map<Integer, Object> createXMLColumnMetadata(Query xmlCommand) {
  2. GroupSymbol doc = xmlCommand.getFrom().getGroups().get(0);
  3. Map<Integer, Object> xmlMetadata = getDefaultColumn(doc.getName(), XML_COLUMN_NAME, XMLType.class);
  4. // Override size as XML may be big
  5. xmlMetadata.put(ResultsMetadataConstants.DISPLAY_SIZE, JDBCSQLTypeInfo.XML_COLUMN_LENGTH);
  6. return xmlMetadata;
  7. }

代码示例来源:origin: org.teiid/teiid-engine

  1. /**
  2. * This validation is more convoluted than needed since it is being run before rewrite/planning.
  3. * Ideally we would already have correlated references set on the subqueries.
  4. */
  5. private void validateCorrelatedReferences(Query query,
  6. final List<GroupSymbol> correlationGroups, final Set<Expression> groupingSymbols, LanguageObject object, LinkedHashSet<Expression> invalid) {
  7. if (query.getFrom() == null) {
  8. return;
  9. }
  10. ElementCollectorVisitor ecv = new ElementCollectorVisitor(invalid) {
  11. public void visit(ElementSymbol obj) {
  12. if (obj.isExternalReference() && correlationGroups.contains(obj.getGroupSymbol())
  13. && (groupingSymbols == null || !groupingSymbols.contains(obj))) {
  14. super.visit(obj);
  15. }
  16. }
  17. };
  18. AggregateStopNavigator asn = new AggregateStopNavigator(ecv, groupingSymbols);
  19. object.acceptVisitor(asn);
  20. }

代码示例来源:origin: org.teiid/teiid-engine

  1. /**
  2. * Take the query, built straight from the subtree, and rebuild as a simple query
  3. * if possible.
  4. * @param query Query built from collapsing the source nodes
  5. * @return Same query with simplified from clause if possible
  6. */
  7. private void simplifyFromClause(Query query) {
  8. From from = query.getFrom();
  9. List<FromClause> clauses = from.getClauses();
  10. FromClause rootClause = clauses.get(0);
  11. // If all joins are inner joins, move criteria to WHERE and make
  12. // FROM a list of groups instead of a tree of JoinPredicates
  13. if(! hasOuterJoins(rootClause)) {
  14. from.setClauses(new ArrayList<FromClause>());
  15. shredJoinTree(rootClause, query);
  16. } // else leave as is
  17. }

代码示例来源:origin: org.jboss.teiid/teiid-engine

  1. /**
  2. * Take the query, built straight from the subtree, and rebuild as a simple query
  3. * if possible.
  4. * @param query Query built from collapsing the source nodes
  5. * @return Same query with simplified from clause if possible
  6. */
  7. private void simplifyFromClause(Query query) {
  8. From from = query.getFrom();
  9. List<FromClause> clauses = from.getClauses();
  10. FromClause rootClause = clauses.get(0);
  11. // If all joins are inner joins, move criteria to WHERE and make
  12. // FROM a list of groups instead of a tree of JoinPredicates
  13. if(! hasOuterJoins(rootClause)) {
  14. from.setClauses(new ArrayList<FromClause>());
  15. shredJoinTree(rootClause, query);
  16. } // else leave as is
  17. }

代码示例来源:origin: teiid/teiid

  1. /**
  2. * Take the query, built straight from the subtree, and rebuild as a simple query
  3. * if possible.
  4. * @param query Query built from collapsing the source nodes
  5. * @return Same query with simplified from clause if possible
  6. */
  7. private void simplifyFromClause(Query query) {
  8. From from = query.getFrom();
  9. List<FromClause> clauses = from.getClauses();
  10. FromClause rootClause = clauses.get(0);
  11. // If all joins are inner joins, move criteria to WHERE and make
  12. // FROM a list of groups instead of a tree of JoinPredicates
  13. if(! hasOuterJoins(rootClause)) {
  14. from.setClauses(new ArrayList<FromClause>());
  15. shredJoinTree(rootClause, query);
  16. } // else leave as is
  17. }

代码示例来源:origin: teiid/teiid

  1. private void helpCheckFrom(Query query, String[] groupIDs) {
  2. From from = query.getFrom();
  3. List<GroupSymbol> groups = from.getGroups();
  4. assertEquals("Wrong number of group IDs: ", groupIDs.length, groups.size()); //$NON-NLS-1$
  5. for(int i=0; i<groups.size(); i++) {
  6. GroupSymbol group = groups.get(i);
  7. assertNotNull(group.getMetadataID());
  8. assertEquals("Group ID does not match: ", groupIDs[i].toUpperCase(), group.getNonCorrelationName().toUpperCase()); //$NON-NLS-1$
  9. }
  10. }

代码示例来源:origin: teiid/teiid

  1. @Test public void testOptionMakedep() throws Exception {
  2. String sql = "SELECT A.alert_id " + //$NON-NLS-1$
  3. "FROM (FSK_ALERT AS A MAKEDEP INNER JOIN Core.FSC_PARTY_DIM AS C ON A.primary_entity_key = C.PARTY_KEY) " +//$NON-NLS-1$
  4. "LEFT OUTER JOIN FSK_SCENARIO AS S ON A.scenario_id = S.scenario_id ";//$NON-NLS-1$
  5. Query command = (Query)new QueryParser().parseCommand(sql);
  6. JoinPredicate predicate = (JoinPredicate)command.getFrom().getClauses().get(0);
  7. assertTrue(((JoinPredicate)predicate.getLeftClause()).getLeftClause().isMakeDep());
  8. }

代码示例来源:origin: teiid/teiid

  1. @Test public void testTableAliasString() throws Exception {
  2. String sql = "select \"pm1g2\".* from pm1.g1 as \"pm1g2\"";
  3. Query query = (Query)helpResolve(sql);
  4. UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0);
  5. GroupSymbol gs = ufc.getGroup();
  6. assertEquals("pm1g2", gs.getName());
  7. assertEquals("SELECT pm1g2.* FROM pm1.g1 AS pm1g2", query.toString());
  8. }

代码示例来源:origin: teiid/teiid

  1. @Test public void testSubqueryAliasWithPeriod() throws Exception {
  2. String sql = "select \"pm1.g2\".x from (select 1 as x) as \"pm1.g2\"";
  3. Query query = (Query)helpResolve(sql);
  4. SubqueryFromClause sfc = (SubqueryFromClause)query.getFrom().getClauses().get(0);
  5. GroupSymbol gs = sfc.getGroupSymbol();
  6. assertEquals("pm1.g2", gs.getName());
  7. assertNull(gs.getDefinition());
  8. assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.toString());
  9. assertEquals("SELECT \"pm1.g2\".x FROM (SELECT 1 AS x) AS \"pm1.g2\"", query.clone().toString());
  10. assertEquals("[\"pm1.g2\".x]", query.getProjectedSymbols().toString());
  11. }

代码示例来源:origin: teiid/teiid

  1. @Test public void testTableAliasWithMultiplePeriods() throws Exception {
  2. String sql = "select \"pm1..g2\".e1 from pm1.g1 as \"pm1..g2\"";
  3. Query query = (Query)helpResolve(sql);
  4. UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0);
  5. GroupSymbol gs = ufc.getGroup();
  6. assertEquals("pm1..g2", gs.getName());
  7. assertEquals("pm1.g1", gs.getDefinition());
  8. assertEquals("SELECT \"pm1..g2\".e1 FROM pm1.g1 AS \"pm1..g2\"", query.toString());
  9. assertEquals("[\"pm1..g2\".e1]", query.getProjectedSymbols().toString());
  10. }

代码示例来源:origin: teiid/teiid

  1. @Test public void testTableAliasWithPeriod() throws Exception {
  2. String sql = "select \"pm1.g2\".*, e1, \"pm1.g2\".e2, pm1.g2.e2 from pm1.g1 as \"pm1.g2\"";
  3. Query query = (Query)helpResolve(sql);
  4. UnaryFromClause ufc = (UnaryFromClause)query.getFrom().getClauses().get(0);
  5. GroupSymbol gs = ufc.getGroup();
  6. assertEquals("pm1.g2", gs.getName());
  7. assertEquals("pm1.g1", gs.getDefinition());
  8. assertFalse(gs.isTempTable());
  9. assertEquals("SELECT \"pm1.g2\".*, e1, \"pm1.g2\".e2, \"pm1.g2\".e2 FROM pm1.g1 AS \"pm1.g2\"", query.toString());
  10. assertEquals("[\"pm1.g2\".e1, \"pm1.g2\".e2, \"pm1.g2\".e3, \"pm1.g2\".e4, e1, \"pm1.g2\".e2, \"pm1.g2\".e2]", query.getProjectedSymbols().toString());
  11. }

代码示例来源:origin: org.teiid/teiid-engine

  1. public void visit(Query obj) {
  2. preVisitVisitor(obj);
  3. visitNodes(obj.getWith());
  4. visitNode(obj.getSelect());
  5. visitNode(obj.getInto());
  6. visitNode(obj.getFrom());
  7. visitNode(obj.getCriteria());
  8. visitNode(obj.getGroupBy());
  9. visitNode(obj.getHaving());
  10. visitNode(obj.getOrderBy());
  11. visitNode(obj.getLimit());
  12. visitNode(obj.getOption());
  13. postVisitVisitor(obj);
  14. }
  15. public void visit(RaiseStatement obj) {

代码示例来源:origin: teiid/teiid

  1. public void visit(Query obj) {
  2. preVisitVisitor(obj);
  3. visitNodes(obj.getWith());
  4. visitNode(obj.getSelect());
  5. visitNode(obj.getInto());
  6. visitNode(obj.getFrom());
  7. visitNode(obj.getCriteria());
  8. visitNode(obj.getGroupBy());
  9. visitNode(obj.getHaving());
  10. visitNode(obj.getOrderBy());
  11. visitNode(obj.getLimit());
  12. visitNode(obj.getOption());
  13. postVisitVisitor(obj);
  14. }
  15. public void visit(RaiseStatement obj) {

代码示例来源:origin: org.jboss.teiid/teiid-engine

  1. public void visit(Query obj) {
  2. preVisitVisitor(obj);
  3. visitNodes(obj.getWith());
  4. visitNode(obj.getSelect());
  5. visitNode(obj.getInto());
  6. visitNode(obj.getFrom());
  7. visitNode(obj.getCriteria());
  8. visitNode(obj.getGroupBy());
  9. visitNode(obj.getHaving());
  10. visitNode(obj.getOrderBy());
  11. visitNode(obj.getLimit());
  12. visitNode(obj.getOption());
  13. postVisitVisitor(obj);
  14. }
  15. public void visit(RaiseStatement obj) {

相关文章