You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2018/08/20 05:52:19 UTC
[1/2] calcite git commit: Site: Update Julian Hyde's affiliation
Repository: calcite
Updated Branches:
refs/heads/master 23d25d3b0 -> 6d6421c8a
Site: Update Julian Hyde's affiliation
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/5c592b7e
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/5c592b7e
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/5c592b7e
Branch: refs/heads/master
Commit: 5c592b7ed7e71a613d3ddeadcd67300c9ea6b5e8
Parents: 23d25d3
Author: Julian Hyde <jh...@apache.org>
Authored: Sun Aug 19 11:19:46 2018 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Sun Aug 19 11:22:12 2018 -0700
----------------------------------------------------------------------
site/_data/contributors.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/5c592b7e/site/_data/contributors.yml
----------------------------------------------------------------------
diff --git a/site/_data/contributors.yml b/site/_data/contributors.yml
index 99b1544..a1cafca 100644
--- a/site/_data/contributors.yml
+++ b/site/_data/contributors.yml
@@ -95,7 +95,7 @@
- name: Julian Hyde
apacheId: jhyde
githubId: julianhyde
- org: Hortonworks
+ org: Looker
role: PMC
homepage: http://people.apache.org/~jhyde
- name: Kevin Liew
[2/2] calcite git commit: [CALCITE-2480] NameSet.contains wrongly
returns false when element in set is upper-case and seek is lower-case
Posted by jh...@apache.org.
[CALCITE-2480] NameSet.contains wrongly returns false when element in set is upper-case and seek is lower-case
Implement toString, hashCode and equals for NameSet, NameMap and
NameMultimap; and add tests.
Fix some cosmetic issues in other code, such as missing newline at end
of file.
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/6d6421c8
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/6d6421c8
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/6d6421c8
Branch: refs/heads/master
Commit: 6d6421c8a4e0c578bfff736c4690c1c6f47572dd
Parents: 5c592b7
Author: Julian Hyde <jh...@apache.org>
Authored: Sun Aug 19 11:13:48 2018 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Sun Aug 19 16:22:36 2018 -0700
----------------------------------------------------------------------
cassandra/src/test/resources/cassandra.yaml | 4 +-
cassandra/src/test/resources/logback-test.xml | 2 +-
.../java/org/apache/calcite/util/NameMap.java | 14 +++++
.../org/apache/calcite/util/NameMultimap.java | 14 +++++
.../java/org/apache/calcite/util/NameSet.java | 26 +++++++-
.../rel2sql/RelToSqlConverterStructsTest.java | 1 +
.../org/apache/calcite/test/HepPlannerTest.java | 1 -
.../calcite/test/RexProgramBuilderBase.java | 8 ++-
.../calcite/test/SqlToRelConverterTest.java | 2 +-
.../java/org/apache/calcite/util/UtilTest.java | 65 +++++++++++++++++---
.../calcite/test/SqlToRelConverterTest.xml | 6 +-
11 files changed, 123 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/cassandra/src/test/resources/cassandra.yaml
----------------------------------------------------------------------
diff --git a/cassandra/src/test/resources/cassandra.yaml b/cassandra/src/test/resources/cassandra.yaml
index 1f3f74a..51fe441 100644
--- a/cassandra/src/test/resources/cassandra.yaml
+++ b/cassandra/src/test/resources/cassandra.yaml
@@ -597,4 +597,6 @@ encryption_options:
# protocol: TLS
# algorithm: SunX509
# store_type: JKS
- # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA]
\ No newline at end of file
+ # cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA]
+
+# End cassandra.yaml
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/cassandra/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/cassandra/src/test/resources/logback-test.xml b/cassandra/src/test/resources/logback-test.xml
index edfc5b0..e469832 100644
--- a/cassandra/src/test/resources/logback-test.xml
+++ b/cassandra/src/test/resources/logback-test.xml
@@ -29,4 +29,4 @@ limitations under the License.
<appender-ref ref="STDOUT" />
</root>
-</configuration>
\ No newline at end of file
+</configuration>
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/main/java/org/apache/calcite/util/NameMap.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/NameMap.java b/core/src/main/java/org/apache/calcite/util/NameMap.java
index 3a34d51..cd138ea 100644
--- a/core/src/main/java/org/apache/calcite/util/NameMap.java
+++ b/core/src/main/java/org/apache/calcite/util/NameMap.java
@@ -45,6 +45,20 @@ public class NameMap<V> {
this(new TreeMap<String, V>(COMPARATOR));
}
+ @Override public String toString() {
+ return map.toString();
+ }
+
+ @Override public int hashCode() {
+ return map.hashCode();
+ }
+
+ @Override public boolean equals(Object obj) {
+ return this == obj
+ || obj instanceof NameMap
+ && map.equals(((NameMap) obj).map);
+ }
+
/** Creates a NameMap that is an immutable copy of a given map. */
public static <V> NameMap immutableCopyOf(Map<String, V> names) {
return new NameMap<>(ImmutableSortedMap.copyOf(names, COMPARATOR));
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/main/java/org/apache/calcite/util/NameMultimap.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/NameMultimap.java b/core/src/main/java/org/apache/calcite/util/NameMultimap.java
index ecab012..a535809 100644
--- a/core/src/main/java/org/apache/calcite/util/NameMultimap.java
+++ b/core/src/main/java/org/apache/calcite/util/NameMultimap.java
@@ -48,6 +48,20 @@ public class NameMultimap<V> {
this(new TreeMap<String, List<V>>(COMPARATOR));
}
+ @Override public String toString() {
+ return map.toString();
+ }
+
+ @Override public int hashCode() {
+ return map.hashCode();
+ }
+
+ @Override public boolean equals(Object obj) {
+ return this == obj
+ || obj instanceof NameMultimap
+ && map.equals(((NameMultimap) obj).map);
+ }
+
/** Adds an entry to this multimap. */
public void put(String name, V v) {
List<V> list = map.computeIfAbsent(name, k -> new ArrayList<>());
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/main/java/org/apache/calcite/util/NameSet.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/util/NameSet.java b/core/src/main/java/org/apache/calcite/util/NameSet.java
index 22b7da0..3f78d18 100644
--- a/core/src/main/java/org/apache/calcite/util/NameSet.java
+++ b/core/src/main/java/org/apache/calcite/util/NameSet.java
@@ -60,6 +60,20 @@ public class NameSet {
return new NameSet(ImmutableSortedSet.copyOf(NameSet.COMPARATOR, names));
}
+ @Override public String toString() {
+ return names.toString();
+ }
+
+ @Override public int hashCode() {
+ return names.hashCode();
+ }
+
+ @Override public boolean equals(Object obj) {
+ return this == obj
+ || obj instanceof NameSet
+ && names.equals(((NameSet) obj).names);
+ }
+
public void add(String name) {
names.add(name);
}
@@ -87,9 +101,15 @@ public class NameSet {
return true;
}
if (!caseSensitive) {
- final String s = names.ceiling(name.toLowerCase(Locale.ROOT));
- return s != null
- && s.equalsIgnoreCase(name);
+ final String lowerName = name.toLowerCase(Locale.ROOT);
+ final String ceiling = names.ceiling(lowerName);
+ if (ceiling != null && ceiling.equalsIgnoreCase(name)) {
+ return true;
+ }
+ final String floor = names.floor(lowerName);
+ if (floor != null && floor.equalsIgnoreCase(name)) {
+ return true;
+ }
}
return false;
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterStructsTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterStructsTest.java b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterStructsTest.java
index aef7993..a2ca141 100644
--- a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterStructsTest.java
+++ b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterStructsTest.java
@@ -203,4 +203,5 @@ public class RelToSqlConverterStructsTest {
sql(query).ok(expected);
}
}
+
// End RelToSqlConverterStructsTest.java
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/java/org/apache/calcite/test/HepPlannerTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/HepPlannerTest.java b/core/src/test/java/org/apache/calcite/test/HepPlannerTest.java
index dff2486..dea4c16 100644
--- a/core/src/test/java/org/apache/calcite/test/HepPlannerTest.java
+++ b/core/src/test/java/org/apache/calcite/test/HepPlannerTest.java
@@ -42,7 +42,6 @@ import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
-
/**
* HepPlannerTest is a unit test for {@link HepPlanner}. See
* {@link RelOptRulesTest} for an explanation of how to add tests; the tests in
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/java/org/apache/calcite/test/RexProgramBuilderBase.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/RexProgramBuilderBase.java b/core/src/test/java/org/apache/calcite/test/RexProgramBuilderBase.java
index 6b74e9a..b018109 100644
--- a/core/src/test/java/org/apache/calcite/test/RexProgramBuilderBase.java
+++ b/core/src/test/java/org/apache/calcite/test/RexProgramBuilderBase.java
@@ -382,10 +382,12 @@ public abstract class RexProgramBuilderBase {
/**
* Generates input ref with given type and index.
*
- * Prefer {@link #vBool()}, {@link #vInt()} and so on.
+ * <p>Prefer {@link #vBool()}, {@link #vInt()} and so on.
+ *
+ * <p>The problem with "input refs" is {@code input(tInt(), 0).toString()}
+ * yields {@code $0}, so the type of the expression is not printed, and it
+ * makes it hard to analyze the expressions.
*
- * The problem with "input refs" is {@code input(tInt(), 0).toString()} yields {@code $0},
- * so the type of the expression is not printed, and it makes it hard to analyze the expressions.
* @param type desired type of the node
* @param arg argument index (0-based)
* @return input ref with given type and index
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
index b62438a..aba2274 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
@@ -2521,7 +2521,7 @@ public class SqlToRelConverterTest extends SqlToRelTestBase {
sql(sql3).with(getTesterWithDynamicTable()).ok();
}
- @Test public void testStarDynamicSchemaUnnestNestedSubquery() {
+ @Test public void testStarDynamicSchemaUnnestNestedSubQuery() {
String sql3 = "select t2.c1\n"
+ "from (select * from SALES.CUSTOMER) as t1,\n"
+ "unnest(t1.fake_col) as t2(c1)";
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/java/org/apache/calcite/util/UtilTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/util/UtilTest.java b/core/src/test/java/org/apache/calcite/util/UtilTest.java
index fa649c8..5c21892 100644
--- a/core/src/test/java/org/apache/calcite/util/UtilTest.java
+++ b/core/src/test/java/org/apache/calcite/util/UtilTest.java
@@ -2000,12 +2000,30 @@ public class UtilTest {
assertThat(Iterables.size(names.iterable()), is(1));
names.add("Baz");
names.add("Abcde");
+ names.add("WOMBAT");
names.add("Zymurgy");
- assertThat(Iterables.size(names.iterable()), is(4));
+ assertThat(names.toString(), is("[Abcde, Baz, baz, WOMBAT, Zymurgy]"));
+ assertThat(Iterables.size(names.iterable()), is(5));
assertThat(names.range("baz", false).size(), is(2));
assertThat(names.range("baz", true).size(), is(1));
assertThat(names.range("BAZ", true).size(), is(0));
assertThat(names.range("Baz", true).size(), is(1));
+ assertThat(names.contains("baz", true), is(true));
+ assertThat(names.contains("baz", false), is(true));
+ assertThat(names.contains("BAZ", true), is(false));
+ assertThat(names.contains("BAZ", false), is(true));
+ assertThat(names.contains("abcde", true), is(false));
+ assertThat(names.contains("abcde", false), is(true));
+ assertThat(names.contains("ABCDE", true), is(false));
+ assertThat(names.contains("ABCDE", false), is(true));
+ assertThat(names.contains("wombat", true), is(false));
+ assertThat(names.contains("wombat", false), is(true));
+ assertThat(names.contains("womBat", true), is(false));
+ assertThat(names.contains("womBat", false), is(true));
+ assertThat(names.contains("WOMBAT", true), is(true));
+ assertThat(names.contains("WOMBAT", false), is(true));
+ assertThat(names.contains("zyMurgy", true), is(false));
+ assertThat(names.contains("zyMurgy", false), is(true));
}
/** Unit test for {@link org.apache.calcite.util.NameMap}. */
@@ -2039,14 +2057,30 @@ public class UtilTest {
assertThat(map.map().size(), is(1));
map.put("Baz", 1);
map.put("Abcde", 2);
+ map.put("WOMBAT", 4);
map.put("Zymurgy", 3);
- assertThat(map.map().size(), is(4));
- assertThat(map.map().entrySet().size(), is(4));
- assertThat(map.map().keySet().size(), is(4));
+ assertThat(map.toString(),
+ is("{Abcde=2, Baz=1, baz=0, WOMBAT=4, Zymurgy=3}"));
+ assertThat(map.map().size(), is(5));
+ assertThat(map.map().entrySet().size(), is(5));
+ assertThat(map.map().keySet().size(), is(5));
assertThat(map.range("baz", false).size(), is(2));
assertThat(map.range("baz", true).size(), is(1));
assertThat(map.range("BAZ", true).size(), is(0));
assertThat(map.range("Baz", true).size(), is(1));
+ assertThat(map.containsKey("baz", true), is(true));
+ assertThat(map.containsKey("baz", false), is(true));
+ assertThat(map.containsKey("BAZ", true), is(false));
+ assertThat(map.containsKey("BAZ", false), is(true));
+ assertThat(map.containsKey("abcde", true), is(false));
+ assertThat(map.containsKey("abcde", false), is(true));
+ assertThat(map.containsKey("ABCDE", true), is(false));
+ assertThat(map.containsKey("ABCDE", false), is(true));
+ assertThat(map.containsKey("wombat", true), is(false));
+ assertThat(map.containsKey("wombat", false), is(true));
+ assertThat(map.containsKey("womBat", false), is(true));
+ assertThat(map.containsKey("zyMurgy", true), is(false));
+ assertThat(map.containsKey("zyMurgy", false), is(true));
}
/** Unit test for {@link org.apache.calcite.util.NameMultimap}. */
@@ -2082,14 +2116,31 @@ public class UtilTest {
assertThat(map.map().size(), is(2));
map.put("Baz", 1);
map.put("Abcde", 2);
+ map.put("WOMBAT", 4);
map.put("Zymurgy", 3);
- assertThat(map.map().size(), is(5));
- assertThat(map.map().entrySet().size(), is(5));
- assertThat(map.map().keySet().size(), is(5));
+ final String expected = "{Abcde=[2], BAz=[0], Baz=[1], baz=[0, 0],"
+ + " WOMBAT=[4], Zymurgy=[3]}";
+ assertThat(map.toString(), is(expected));
+ assertThat(map.map().size(), is(6));
+ assertThat(map.map().entrySet().size(), is(6));
+ assertThat(map.map().keySet().size(), is(6));
assertThat(map.range("baz", false).size(), is(4));
assertThat(map.range("baz", true).size(), is(2));
assertThat(map.range("BAZ", true).size(), is(0));
assertThat(map.range("Baz", true).size(), is(1));
+ assertThat(map.containsKey("baz", true), is(true));
+ assertThat(map.containsKey("baz", false), is(true));
+ assertThat(map.containsKey("BAZ", true), is(false));
+ assertThat(map.containsKey("BAZ", false), is(true));
+ assertThat(map.containsKey("abcde", true), is(false));
+ assertThat(map.containsKey("abcde", false), is(true));
+ assertThat(map.containsKey("ABCDE", true), is(false));
+ assertThat(map.containsKey("ABCDE", false), is(true));
+ assertThat(map.containsKey("wombat", true), is(false));
+ assertThat(map.containsKey("wombat", false), is(true));
+ assertThat(map.containsKey("womBat", false), is(true));
+ assertThat(map.containsKey("zyMurgy", true), is(false));
+ assertThat(map.containsKey("zyMurgy", false), is(true));
}
@Test public void testNlsStringClone() {
http://git-wip-us.apache.org/repos/asf/calcite/blob/6d6421c8/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
index 0867b8d..7e87d88 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -5292,10 +5292,10 @@ LogicalProject(**=[$1], $unnest=[$2])
]]>
</Resource>
</TestCase>
- <TestCase name="testStarDynamicSchemaUnnestNestedSubquery">
+ <TestCase name="testStarDynamicSchemaUnnestNestedSubQuery">
<Resource name="sql">
- <![CDATA[select t2.c1
- from (select * from SALES.CUSTOMER) as t1, unnest(t1.fake_col) as t2(c1)]]>
+ <![CDATA[select t2.c1 from (select * from SALES.CUSTOMER)
+ as t1, unnest(t1.fake_col) as t2(c1)]]>
</Resource>
<Resource name="plan">
<![CDATA[