/** * Adds an expression to a select list, ensuring that its alias does not * clash with any existing expressions on the list. */ protected void addToSelectList( List<SqlNode> list, Set<String> aliases, List<Map.Entry<String, RelDataType>> fieldList, SqlNode exp, SqlValidatorScope scope, final boolean includeSystemVars) { String alias = SqlValidatorUtil.getAlias(exp, -1); String uniqueAlias = SqlValidatorUtil.uniquify( alias, aliases, SqlValidatorUtil.EXPR_SUGGESTER); if (!alias.equals(uniqueAlias)) { exp = SqlValidatorUtil.addAlias(exp, uniqueAlias); } fieldList.add(Pair.of(uniqueAlias, deriveType(scope, exp))); list.add(exp); }
SqlValidatorUtil.uniquify(Pair.right(projects)));
RelNode newProject = HiveProject.create(frame.r, Pair.left(projects), SqlValidatorUtil.uniquify(Pair.right(projects)));
/** * Makes sure that field names are unique. */ public Builder uniquify() { final List<String> uniqueNames = SqlValidatorUtil.uniquify(names, typeFactory.getTypeSystem().isSchemaCaseSensitive()); if (uniqueNames != names) { names.clear(); names.addAll(uniqueNames); } return this; }
/** * Makes sure that field names are unique. */ public Builder uniquify() { final List<String> uniqueNames = SqlValidatorUtil.uniquify(names, typeFactory.getTypeSystem().isSchemaCaseSensitive()); if (uniqueNames != names) { names.clear(); names.addAll(uniqueNames); } return this; }
/** Returns a rowType having all unique field name. * * @param rowType : input rowType * @param typeFactory : type factory used to create a new row type. * @return */ public static RelDataType uniqifyFieldName(final RelDataType rowType, final RelDataTypeFactory typeFactory) { return typeFactory.createStructType(RelOptUtil.getFieldTypeList(rowType), SqlValidatorUtil.uniquify(rowType.getFieldNames())); }
@Test public void testUniquifyOrderingRepeatedCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "def", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, not(resultList)); checkChangedFieldList(nameList, resultList, true); }
@Test public void testUniquifyOrderingRepeatedNotCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "def", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyOrderingNotCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "abc", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyNotCaseSensitive() { List<String> nameList = Lists.newArrayList("col1", "COL1", "col_ABC", "col_abC"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyOrderingRepeatedCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "def", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, not(resultList)); checkChangedFieldList(nameList, resultList, true); }
@Test public void testUniquifyOrderingNotCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "abc", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyOrderingRepeatedNotCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "def", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyNotCaseSensitive() { List<String> nameList = Lists.newArrayList("col1", "COL1", "col_ABC", "col_abC"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, false); assertThat(resultList, not(nameList)); checkChangedFieldList(nameList, resultList, false); }
@Test public void testUniquifyOrderingCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "abc", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, sameInstance(resultList)); }
@Test public void testUniquifyOrderingCaseSensitive() { List<String> nameList = Lists.newArrayList("k68s", "def", "col1", "COL1", "abc", "123"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, sameInstance(resultList)); }
@Test public void testUniquifyCaseSensitive() { List<String> nameList = Lists.newArrayList("col1", "COL1", "col_ABC", "col_abC"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, sameInstance(resultList)); }
@Test public void testUniquifyCaseSensitive() { List<String> nameList = Lists.newArrayList("col1", "COL1", "col_ABC", "col_abC"); List<String> resultList = SqlValidatorUtil.uniquify( nameList, SqlValidatorUtil.EXPR_SUGGESTER, true); assertThat(nameList, sameInstance(resultList)); }