/** * Returns the underlying Parser metadata. * * <p>To use a different parser (recognizing a different dialect of SQL), * derived class should override. * * @return metadata */ protected SqlAbstractParserImpl.Metadata getParserMetadata() { SqlParser parser = SqlParser.create("", parserConfig); return parser.getMetadata(); }
/** * Returns the underlying Parser metadata. * * <p>To use a different parser (recognizing a different dialect of SQL), * derived class should override. * * @return metadata */ protected SqlAbstractParserImpl.Metadata getParserMetadata() { SqlParser parser = SqlParser.create("", parserConfig); return parser.getMetadata(); }
public static void main(String[] args) throws Exception { if (args.length != 1) { throw new IllegalArgumentException("Usage: java {cp} " + SqlReservedKeywordGenerator.class.getName() + " path/where/to/write/the/file"); } final File outputFile = new File(args[0], RESERVED_KEYWORD_FILE_NAME); System.out.println("Writing reserved SQL keywords to file: " + outputFile.getAbsolutePath()); try(PrintWriter outFile = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outputFile), UTF_8))) { outFile.printf("# AUTO-GENERATED LIST OF SQL RESERVED KEYWORDS (generated by %s)", SqlReservedKeywordGenerator.class.getName()); outFile.println(); final SqlAbstractParserImpl.Metadata metadata = SqlParser.create("", new ParserConfig(Quoting.DOUBLE_QUOTE, 256)).getMetadata(); for (String s : metadata.getTokens()) { if (metadata.isKeyword(s) && metadata.isReservedWord(s)) { outFile.println(s); } } } } }
private ImmutableMap.Builder<DatabaseProperty, Object> addProperty( ImmutableMap.Builder<DatabaseProperty, Object> builder, DatabaseProperty p) { switch (p) { case GET_S_Q_L_KEYWORDS: return builder.put(p, SqlParser.create("").getMetadata().getJdbcKeywords()); case GET_NUMERIC_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getNumericFunctions()); case GET_STRING_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getStringFunctions()); case GET_SYSTEM_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getSystemFunctions()); case GET_TIME_DATE_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getTimeDateFunctions()); default: return builder; } }
private ImmutableMap.Builder<DatabaseProperty, Object> addProperty( ImmutableMap.Builder<DatabaseProperty, Object> builder, DatabaseProperty p) { switch (p) { case GET_S_Q_L_KEYWORDS: return builder.put(p, SqlParser.create("").getMetadata().getJdbcKeywords()); case GET_NUMERIC_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getNumericFunctions()); case GET_STRING_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getStringFunctions()); case GET_SYSTEM_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getSystemFunctions()); case GET_TIME_DATE_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getTimeDateFunctions()); default: return builder; } }
private ImmutableMap.Builder<DatabaseProperty, Object> addProperty( ImmutableMap.Builder<DatabaseProperty, Object> builder, DatabaseProperty p) { switch (p) { case GET_S_Q_L_KEYWORDS: return builder.put(p, SqlParser.create("").getMetadata().getJdbcKeywords()); case GET_NUMERIC_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getNumericFunctions()); case GET_STRING_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getStringFunctions()); case GET_SYSTEM_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getSystemFunctions()); case GET_TIME_DATE_FUNCTIONS: return builder.put(p, SqlJdbcFunctionCall.getTimeDateFunctions()); default: return builder; } }
/** Returns whether a word is reserved in this parser. This method can be * used to disable tests that behave differently with different collections * of reserved words. */ protected boolean isReserved(String word) { SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata(); return metadata.isReservedWord(word.toUpperCase(Locale.ROOT)); }
++stage; SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata(); int z = 0; for (String s : metadata.getTokens()) {
++stage; SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata(); int z = 0; for (String s : metadata.getTokens()) {
assumeTrue("don't run this test for sub-classes", isNotSubclass()); final SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata();
assumeTrue("don't run this test for sub-classes", isNotSubclass()); final SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata();
@Test public void testMetadata() { SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata(); assertThat(metadata.isReservedFunctionName("ABS"), is(true)); assertThat(metadata.isReservedFunctionName("FOO"), is(false));
@Override public GetServerMetaResp execute() throws Exception { final GetServerMetaResp.Builder respBuilder = GetServerMetaResp.newBuilder(); final ServerMeta.Builder metaBuilder = session.getRecordBatchFormat() != RecordBatchFormat.DRILL_1_0 ? ServerMeta.newBuilder(DEFAULT) : ServerMeta.newBuilder(DRILL_1_0_DEFAULT); PlannerSettings plannerSettings = new PlannerSettings(dContext.getConfig(), session.getOptions(), dContext.getClusterResourceInformation()); ParserConfig config = ParserConfig.newInstance(session, plannerSettings); int identifierMaxLength = config.identifierMaxLength(); Metadata metadata = SqlParser.create("", config).getMetadata(); metaBuilder .setMaxCatalogNameLength(identifierMaxLength) .setMaxColumnNameLength(identifierMaxLength) .setMaxCursorNameLength(identifierMaxLength) .setMaxSchemaNameLength(identifierMaxLength) .setMaxTableNameLength(identifierMaxLength) .setMaxUserNameLength(identifierMaxLength) .setIdentifierQuoteString(config.quoting().string) .setIdentifierCasing(getIdentifierCasing(config.unquotedCasing(), config.caseSensitive())) .setQuotedIdentifierCasing(getIdentifierCasing(config.quotedCasing(), config.caseSensitive())) .addAllSqlKeywords(Splitter.on(",").split(metadata.getJdbcKeywords())); respBuilder.setServerMeta(metaBuilder); respBuilder.setStatus(RequestStatus.OK); respBuilder.setQueryId(queryId); return respBuilder.build(); }
@Override public void run() { final GetServerMetaResp.Builder respBuilder = GetServerMetaResp.newBuilder(); try { final ServerMeta.Builder metaBuilder = ServerMeta.newBuilder(DEFAULT); PlannerSettings plannerSettings = new PlannerSettings(session.getOptions(), context.getFunctionImplementationRegistry()); DrillParserConfig config = new DrillParserConfig(plannerSettings); int identifierMaxLength = config.identifierMaxLength(); Metadata metadata = SqlParser.create("", config).getMetadata(); metaBuilder .setMaxCatalogNameLength(identifierMaxLength) .setMaxColumnNameLength(identifierMaxLength) .setMaxCursorNameLength(identifierMaxLength) .setMaxSchemaNameLength(identifierMaxLength) .setMaxTableNameLength(identifierMaxLength) .setMaxUserNameLength(identifierMaxLength) .setIdentifierQuoteString(config.quoting().string) .setIdentifierCasing(getIdentifierCasing(config.unquotedCasing(), config.caseSensitive())) .setQuotedIdentifierCasing(getIdentifierCasing(config.quotedCasing(), config.caseSensitive())) .addAllSqlKeywords(Splitter.on(",").split(metadata.getJdbcKeywords())); respBuilder.setServerMeta(metaBuilder); respBuilder.setStatus(RequestStatus.OK); } catch(Throwable t) { respBuilder.setStatus(RequestStatus.FAILED); respBuilder.setError(MetadataProvider.createPBError("server meta", t)); } finally { responseSender.send(new Response(RpcType.SERVER_META, respBuilder.build())); } }
@Test public void testMetadata() { SqlAbstractParserImpl.Metadata metadata = getSqlParser("").getMetadata(); assertTrue(metadata.isReservedFunctionName("ABS")); assertFalse(metadata.isReservedFunctionName("FOO"));