/** Parses and validates a SQL query. For use within Optiq only. */ public static OptiqPrepare.ParseResult parse( final OptiqConnection connection, final OptiqSchema schema, final List<String> schemaPath, final String sql) { final OptiqPrepare prepare = OptiqPrepare.DEFAULT_FACTORY.apply(); final OptiqPrepare.Context context = makeContext(connection, schema, schemaPath); OptiqPrepare.Dummy.push(context); try { return prepare.parse(context, sql); } finally { OptiqPrepare.Dummy.pop(context); } }
private static OptiqPrepare.Context makeContext( final OptiqConnection connection, final OptiqSchema schema, final List<String> schemaPath) { if (connection == null) { final OptiqPrepare.Context context0 = OptiqPrepare.Dummy.peek(); return makeContext( context0.config(), context0.getTypeFactory(), context0.getDataContext(), schema, schemaPath); } else { return makeContext( connection.config(), connection.getTypeFactory(), createDataContext(connection), schema, schemaPath); } }