Java Code Examples for org.apache.calcite.sql.validate.SqlMoniker#getType()
The following examples show how to use
org.apache.calcite.sql.validate.SqlMoniker#getType() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: TestSQLAnalyzer.java From dremio-oss with Apache License 2.0 | 6 votes |
/** * Check that the returned suggestions list contains the expected hints. * * @param suggestions The list of query hints */ private void assertSuggestions(List<SqlMoniker> suggestions) { for (SqlMoniker hint : suggestions) { switch (hint.getType()) { case CATALOG: assertEquals(TEST_CATALOG ,hint.getFullyQualifiedNames().get(0)); break; case SCHEMA: assertEquals(TEST_SCHEMA ,hint.getFullyQualifiedNames().get(0)); break; case TABLE: assertEquals(TEST_TABLE ,hint.getFullyQualifiedNames().get(0)); break; case KEYWORD: assertTrue(FROM_KEYWORDS.contains(hint.getFullyQualifiedNames().get(0))); break; default: Assert.fail(); } } }
Example 2
Source File: SQLResource.java From dremio-oss with Apache License 2.0 | 6 votes |
/** * Builds the response object for query suggestions. * * @param suggestionList The suggestion list returned from the SqlAdvisor. * * @return The built SuggestionResponse object or null if there are no suggestions. */ public SuggestionResponse buildSuggestionResponse(List<SqlMoniker> suggestionList) { // Return empty response in REST request if (suggestionList == null || suggestionList.isEmpty()) { return null; } // Create and populate suggestion response list List<SuggestionResponse.Suggestion> suggestions = new ArrayList<>(); for (SqlMoniker hint : suggestionList) { // Quote the identifiers if they are not keywords or functions, // and are required to be quoted. List<String> qualifiedNames = hint.getFullyQualifiedNames(); if ((hint.getType() != SqlMonikerType.KEYWORD) && (hint.getType() != SqlMonikerType.FUNCTION)) { qualifiedNames = qualifiedNames.stream().map(name -> quoteIdentifier(name)).collect(Collectors.toList()); } suggestions.add( new SuggestionResponse.Suggestion(Joiner.on(".").join(qualifiedNames),hint.getType().name())); } SuggestionResponse response = new SuggestionResponse(suggestions); return response; }
Example 3
Source File: SqlAdvisorTest.java From calcite with Apache License 2.0 | 5 votes |
private String convertCompletionHints(List<SqlMoniker> hints) { if (hints == null) { return "<<NULL>>"; } List<String> list = new ArrayList<String>(); for (SqlMoniker hint : hints) { if (hint.getType() != SqlMonikerType.FUNCTION) { list.add(hint.id()); } } Collections.sort(list); return toString(list); }
Example 4
Source File: SqlAdvisor.java From Bats with Apache License 2.0 | 4 votes |
public String getReplacement(SqlMoniker hint, boolean quoted, Casing preferredCasing) { String name = Util.last(hint.getFullyQualifiedNames()); boolean isKeyword = hint.getType() == SqlMonikerType.KEYWORD; // If replacement has mixed case, we need to quote it (or not depending // on quotedCasing/unquotedCasing quoted &= !isKeyword; if (!quoted && !isKeyword && getReservedAndKeyWordsSet().contains(name)) { quoted = true; } StringBuilder sb = new StringBuilder(name.length() + (quoted ? 2 : 0)); if (!isKeyword && !Util.isValidJavaIdentifier(name)) { // needs quotes ==> quoted quoted = true; } String idToAppend = name; if (!quoted) { // id ==preferredCasing==> preferredId ==unquotedCasing==> recasedId // if recasedId matches id, then use preferredId String preferredId = applyCasing(name, preferredCasing); if (isKeyword || matchesUnquoted(name, preferredId)) { idToAppend = preferredId; } else { // Check if we can use unquoted identifier as is: for instance, unquotedCasing==UNCHANGED quoted = !matchesUnquoted(name, idToAppend); } } if (quoted) { sb.append(quoteStart()); } sb.append(idToAppend); if (quoted) { sb.append(quoteEnd()); } return sb.toString(); }
Example 5
Source File: SqlAdvisor.java From calcite with Apache License 2.0 | 4 votes |
public String getReplacement(SqlMoniker hint, boolean quoted, Casing preferredCasing) { String name = Util.last(hint.getFullyQualifiedNames()); boolean isKeyword = hint.getType() == SqlMonikerType.KEYWORD; // If replacement has mixed case, we need to quote it (or not depending // on quotedCasing/unquotedCasing quoted &= !isKeyword; if (!quoted && !isKeyword && getReservedAndKeyWordsSet().contains(name)) { quoted = true; } StringBuilder sb = new StringBuilder(name.length() + (quoted ? 2 : 0)); if (!isKeyword && !Util.isValidJavaIdentifier(name)) { // needs quotes ==> quoted quoted = true; } String idToAppend = name; if (!quoted) { // id ==preferredCasing==> preferredId ==unquotedCasing==> recasedId // if recasedId matches id, then use preferredId String preferredId = applyCasing(name, preferredCasing); if (isKeyword || matchesUnquoted(name, preferredId)) { idToAppend = preferredId; } else { // Check if we can use unquoted identifier as is: for instance, unquotedCasing==UNCHANGED quoted = !matchesUnquoted(name, idToAppend); } } if (quoted) { sb.append(quoteStart()); } sb.append(idToAppend); if (quoted) { sb.append(quoteEnd()); } return sb.toString(); }