@Override public Node visitCreateView(SqlBaseParser.CreateViewContext context) { Optional<CreateView.Security> security = Optional.empty(); if (context.DEFINER() != null) { security = Optional.of(CreateView.Security.DEFINER); } else if (context.INVOKER() != null) { security = Optional.of(CreateView.Security.INVOKER); } return new CreateView( getLocation(context), getQualifiedName(context.qualifiedName()), (Query) visit(context.query()), context.REPLACE() != null, security); }
@Override public Node visitCreateView(SqlBaseParser.CreateViewContext context) { Optional<CreateView.Security> security = Optional.empty(); if (context.DEFINER() != null) { security = Optional.of(CreateView.Security.DEFINER); } else if (context.INVOKER() != null) { security = Optional.of(CreateView.Security.INVOKER); } return new CreateView( getLocation(context), getQualifiedName(context.qualifiedName()), (Query) visit(context.query()), context.REPLACE() != null, security); }
@Test public void testCreateView() { Query query = simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("t"))); assertStatement("CREATE VIEW a AS SELECT * FROM t", new CreateView(QualifiedName.of("a"), query, false, Optional.empty())); assertStatement("CREATE OR REPLACE VIEW a AS SELECT * FROM t", new CreateView(QualifiedName.of("a"), query, true, Optional.empty())); assertStatement("CREATE VIEW a SECURITY DEFINER AS SELECT * FROM t", new CreateView(QualifiedName.of("a"), query, false, Optional.of(CreateView.Security.DEFINER))); assertStatement("CREATE VIEW a SECURITY INVOKER AS SELECT * FROM t", new CreateView(QualifiedName.of("a"), query, false, Optional.of(CreateView.Security.INVOKER))); assertStatement("CREATE VIEW bar.foo AS SELECT * FROM t", new CreateView(QualifiedName.of("bar", "foo"), query, false, Optional.empty())); assertStatement("CREATE VIEW \"awesome view\" AS SELECT * FROM t", new CreateView(QualifiedName.of("awesome view"), query, false, Optional.empty())); assertStatement("CREATE VIEW \"awesome schema\".\"awesome view\" AS SELECT * FROM t", new CreateView(QualifiedName.of("awesome schema", "awesome view"), query, false, Optional.empty())); }
Identifier schemaName = (parts.size() > 1) ? parts.get(1) : new Identifier(objectName.getSchemaName()); Identifier catalogName = (parts.size() > 2) ? parts.get(2) : new Identifier(objectName.getCatalogName()); String sql = formatSql(new CreateView(QualifiedName.of(ImmutableList.of(catalogName, schemaName, tableName)), query, false, Optional.empty()), Optional.of(parameters)).trim(); return singleValueQuery("Create View", sql);
String sql = formatSql(new CreateView(createQualifiedName(objectName), query, false, Optional.empty()), Optional.of(parameters)).trim(); return singleValueQuery("Create View", sql);