/** * creates a view for SQLQueryParser * (NOTE: these views are simply names for complex non-parsable subqueries, not database views) * * TODO: make the second argument a callback (which is called only when needed) * TODO: make it re-use parser views for the same SQL * * @param sql * @return */ public ParserViewDefinition createParserView(String sql, ImmutableList<QuotedID> attributes) { if (!isStillMutable()) { throw new IllegalStateException("Too late! Parser views must be created before freezing the DBMetadata"); } RelationID id = getQuotedIDFactory().createRelationID(null, String.format("view_%s", parserViewCounter++)); ParserViewDefinition view = new ParserViewDefinition(id, attributes, sql); // UGLY!! add(view, relations); return view; }
/** * creates a view for SQLQueryParser * (NOTE: these views are simply names for complex non-parsable subqueries, not database views) * * TODO: make the second argument a callback (which is called only when needed) * TODO: make it re-use parser views for the same SQL * * @param sql * @return */ public ParserViewDefinition createParserView(String sql, ImmutableList<QuotedID> attributes) { if (!isStillMutable()) { throw new IllegalStateException("Too late! Parser views must be created before freezing the DBMetadata"); } RelationID id = getQuotedIDFactory().createRelationID(null, String.format("view_%s", parserViewCounter++)); ParserViewDefinition view = new ParserViewDefinition(id, attributes, sql, typeFactory.getXsdStringDatatype()); // UGLY!! add(view, relations); return view; }
ParserViewDefinition view = new ParserViewDefinition(viewId, unionView); columnIds.stream().forEach(view::addAttribute);