This is an automated email from the ASF dual-hosted git repository.
alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 85066469eb2 IGNITE-23624 SQL Calcite: Add support for bitwise
aggregates (BIT_AND, BIT_OR, BIT_XOR) - Fixes #11649.
85066469eb2 is described below
commit 85066469eb204984ac108240b3eb399df4712c85
Author: Vladimir Steshin <[email protected]>
AuthorDate: Wed Nov 20 18:27:03 2024 +0300
IGNITE-23624 SQL Calcite: Add support for bitwise aggregates (BIT_AND,
BIT_OR, BIT_XOR) - Fixes #11649.
Signed-off-by: Aleksey Plekhanov <[email protected]>
---
docs/_docs/SQL/sql-calcite.adoc | 2 +-
docs/_docs/sql-reference/aggregate-functions.adoc | 15 ++
.../query/calcite/exec/exp/agg/Accumulators.java | 96 ++++++++++++
.../query/calcite/prepare/IgniteSqlValidator.java | 3 +
.../calcite/sql/fun/IgniteStdSqlOperatorTable.java | 5 +
.../integration/AggregatesIntegrationTest.java | 166 +++++++++++++++++++++
...{test_bit_and.test_ignore => test_bit_and.test} | 8 +-
.../{test_bit_or.test_ignore => test_bit_or.test} | 8 +-
...{test_bit_xor.test_ignore => test_bit_xor.test} | 8 +-
9 files changed, 292 insertions(+), 19 deletions(-)
diff --git a/docs/_docs/SQL/sql-calcite.adoc b/docs/_docs/SQL/sql-calcite.adoc
index afb7dc5a92e..298f4a5c28b 100644
--- a/docs/_docs/SQL/sql-calcite.adoc
+++ b/docs/_docs/SQL/sql-calcite.adoc
@@ -144,7 +144,7 @@ The Calcite-based SQL engine currently supports:
|Group | Functions list
|Aggregate functions
-|`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`, `ANY_VALUE`, `LISTAGG`, `GROUP_CONCAT`,
`STRING_AGG`, `ARRAY_AGG`, `ARRAY_CONCAT_AGG`, `EVERY`, `SOME`
+|`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`, `ANY_VALUE`, `LISTAGG`, `GROUP_CONCAT`,
`STRING_AGG`, `ARRAY_AGG`, `ARRAY_CONCAT_AGG`, `EVERY`, `SOME`, `BIT_AND`,
`BIT_OR`, `BIT_XOR`
|String functions
|`UPPER`, `LOWER`, `INITCAP`, `TO_BASE64`, `FROM_BASE64`, `MD5`, `SHA1`,
`SUBSTRING`, `LEFT`, `RIGHT`, `REPLACE`, `TRANSLATE`, `CHR`, `CHAR_LENGTH`,
`CHARACTER_LENGTH`, `LENGTH`, `CONCAT`, `OVERLAY`, `POSITION`, `ASCII`,
`REPEAT`, `SPACE`, `STRCMP`, `SOUNDEX`, `DIFFERENCE`, `REVERSE`, `TRIM`,
`LTRIM`, `RTRIM`, `REGEXP_REPLACE`
diff --git a/docs/_docs/sql-reference/aggregate-functions.adoc
b/docs/_docs/sql-reference/aggregate-functions.adoc
index da7ad3bbc13..040731e94f6 100644
--- a/docs/_docs/sql-reference/aggregate-functions.adoc
+++ b/docs/_docs/sql-reference/aggregate-functions.adoc
@@ -68,6 +68,21 @@ A logical OR operation is performed on each pair of
corresponding bits of two bi
In each pair, the result is 1 if the first bit is 1 OR the second bit is 1 OR
both bits are 1, and otherwise the result is 0.
+
+== BIT_XOR
+
+
+[source,sql]
+----
+BIT_XOR (expression)
+----
+
+The bitwise XOR of all non-null values. If no rows are selected, the result is
NULL. Aggregates are only allowed in select statements.
+
+A logical XOR operation is performed on each pair of corresponding bits of two
binary expressions of equal length.
+
+In each pair, the result is 1 if only one of the bits is 1. Otherwise the
result is 0.
+
////
== BOOL_AND
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
index 73e3f305620..a8d453c1d86 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
@@ -33,6 +33,7 @@ import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlKind;
import
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
import
org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
@@ -94,6 +95,10 @@ public class Accumulators {
case "ARRAY_AGG":
case "ARRAY_CONCAT_AGG":
return listAggregateSupplier(call, ctx);
+ case "BIT_AND":
+ case "BIT_OR":
+ case "BIT_XOR":
+ return bitWiseFactory(call, hnd);
default:
throw new AssertionError(call.getAggregation().getName());
}
@@ -143,6 +148,21 @@ public class Accumulators {
}
}
+ /** */
+ private static <Row> Supplier<Accumulator<Row>>
bitWiseFactory(AggregateCall call, RowHandler<Row> hnd) {
+ switch (call.type.getSqlTypeName()) {
+ case BIGINT:
+ case INTEGER:
+ case SMALLINT:
+ case TINYINT:
+ case NULL:
+ return () -> new BitWise<>(call, hnd);
+
+ default:
+ throw new UnsupportedOperationException(call.getName() + " is
not supported for type '" + call.type + "'.");
+ }
+ }
+
/** */
private static <Row> Supplier<Accumulator<Row>> sumFactory(AggregateCall
call, RowHandler<Row> hnd) {
switch (call.type.getSqlTypeName()) {
@@ -399,6 +419,82 @@ public class Accumulators {
}
}
+ /** */
+ private static class BitWise<Row> extends AbstractAccumulator<Row> {
+ /** */
+ private long res;
+
+ /** */
+ private boolean updated;
+
+ /** */
+ private final SqlKind kind;
+
+ /** */
+ private BitWise(AggregateCall aggCall, RowHandler<Row> hnd) {
+ super(aggCall, hnd);
+
+ kind = aggCall.getAggregation().kind;
+
+ assert kind == SqlKind.BIT_AND || kind == SqlKind.BIT_OR || kind
== SqlKind.BIT_XOR;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void add(Row row) {
+ Number in = get(0, row);
+
+ if (in == null)
+ return;
+
+ apply(in.longValue());
+ }
+
+ /** */
+ private void apply(long val) {
+ if (updated) {
+ switch (kind) {
+ case BIT_AND:
+ res &= val;
+ break;
+ case BIT_OR:
+ res |= val;
+ break;
+ case BIT_XOR:
+ res ^= val;
+ break;
+ }
+ }
+ else {
+ res = val;
+
+ updated = true;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void apply(Accumulator<Row> other) {
+ BitWise<Row> other0 = (BitWise<Row>)other;
+
+ if (other0.updated)
+ apply(other0.res);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object end() {
+ return updated ? res : null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory
typeFactory) {
+ return
F.asList(typeFactory.createTypeWithNullability(typeFactory.createSqlType(BIGINT),
true));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory)
{
+ return
typeFactory.createTypeWithNullability(typeFactory.createSqlType(BIGINT), true);
+ }
+ }
+
/** */
private static class DecimalAvg<Row> extends AbstractAccumulator<Row> {
/** */
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
index 93cd94d1dec..36128236f24 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
@@ -429,6 +429,9 @@ public class IgniteSqlValidator extends SqlValidatorImpl {
case GROUP_CONCAT:
case LISTAGG:
case STRING_AGG:
+ case BIT_AND:
+ case BIT_OR:
+ case BIT_XOR:
return;
default:
throw newValidationError(call,
diff --git
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
index 1b7492d958a..e69db3e3173 100644
---
a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
+++
b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
@@ -309,5 +309,10 @@ public class IgniteStdSqlOperatorTable extends
ReflectiveSqlOperatorTable {
register(SqlStdOperatorTable.CURRENT_DATE);
register(SqlStdOperatorTable.LOCALTIME);
register(SqlStdOperatorTable.LOCALTIMESTAMP);
+
+ // Bit wise operations.
+ register(SqlStdOperatorTable.BIT_AND);
+ register(SqlStdOperatorTable.BIT_OR);
+ register(SqlStdOperatorTable.BIT_XOR);
}
}
diff --git
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
index dfe89024b4c..ab2e18d79b0 100644
---
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
+++
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
@@ -174,6 +174,172 @@ public class AggregatesIntegrationTest extends
AbstractBasicIntegrationTransacti
.check();
}
+ /** */
+ @Test
+ public void testBitwiseTypesBounds() {
+ sql("CREATE TABLE tbl (t TINYINT, s SMALLINT, i INT, b BIGINT) WITH "
+ atomicity());
+
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", Byte.MAX_VALUE, 0, 1000, 0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", Byte.MIN_VALUE, 0, 1001, 0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, Short.MAX_VALUE, 1002,
0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, Short.MIN_VALUE, 1003,
0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, 0, Integer.MIN_VALUE, 0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, 0, Integer.MAX_VALUE, 0);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, 0, 1006, Long.MAX_VALUE);
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", 0, 0, 1007, Long.MIN_VALUE);
+
+ assertQuery("SELECT BIT_AND(t) FROM tbl WHERE i=? or
i=?").withParams(1000, 1001).returns((byte)0).check();
+ assertQuery("SELECT BIT_OR(t) FROM tbl WHERE i=? or
i=?").withParams(1000, 1001).returns((byte)-1).check();
+ assertQuery("SELECT BIT_XOR(t) FROM tbl WHERE i=? or
i=?").withParams(1000, 1001).returns((byte)-1).check();
+
+ assertQuery("SELECT BIT_AND(s) FROM tbl WHERE i=? or
i=?").withParams(1002, 1003).returns((short)0).check();
+ assertQuery("SELECT BIT_OR(s) FROM tbl WHERE i=? or
i=?").withParams(1002, 1003).returns((short)-1).check();
+ assertQuery("SELECT BIT_XOR(s) FROM tbl WHERE i=? or
i=?").withParams(1002, 1003).returns((short)-1).check();
+
+ assertQuery("SELECT BIT_AND(i) FROM tbl WHERE i=? or
i=?").withParams(Integer.MAX_VALUE, Integer.MIN_VALUE)
+ .returns(0).check();
+ assertQuery("SELECT BIT_OR(i) FROM tbl WHERE i=? or
i=?").withParams(Integer.MAX_VALUE, Integer.MIN_VALUE)
+ .returns(-1).check();
+ assertQuery("SELECT BIT_XOR(i) FROM tbl WHERE i=? or
i=?").withParams(Integer.MAX_VALUE, Integer.MIN_VALUE)
+ .returns(-1).check();
+
+ assertQuery("SELECT BIT_AND(b) FROM tbl WHERE i=? or
i=?").withParams(1006, 1007).returns(0L).check();
+ assertQuery("SELECT BIT_OR(b) FROM tbl WHERE i=? or
i=?").withParams(1006, 1007).returns(-1L).check();
+ assertQuery("SELECT BIT_XOR(b) FROM tbl WHERE i=? or
i=?").withParams(1006, 1007).returns(-1L).check();
+ }
+
+ /** */
+ @Test
+ public void testBitwiseBasics() {
+ sql("CREATE TABLE tbl (t TINYINT, s SMALLINT, i INT, b BIGINT) WITH "
+ atomicity());
+
+ for (int i = 0; i < 10; ++i)
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", i, i, i, i);
+
+ sql("INSERT INTO tbl values (null, null, null, null)");
+
+ for (String op : F.asList("AND", "OR", "XOR")) {
+ // Check dynamic parameter.
+ assertQuery("SELECT BIT_" + op +
"(?)").withParams((byte)1).returns((byte)1).check();
+ assertQuery("SELECT BIT_" + op +
"(?)").withParams((short)1).returns((short)1).check();
+ assertQuery("SELECT BIT_" + op +
"(?)").withParams(1).returns(1).check();
+ assertQuery("SELECT BIT_" + op +
"(?)").withParams(1L).returns(1L).check();
+
+ // Check 1 value.
+ assertQuery("SELECT BIT_" + op + "(t) FROM tbl WHERE
i=1").returns((byte)1).check();
+ assertQuery("SELECT BIT_" + op + "(s) FROM tbl WHERE
i=1").returns((short)1).check();
+ assertQuery("SELECT BIT_" + op + "(i) FROM tbl WHERE
i=1").returns(1).check();
+ assertQuery("SELECT BIT_" + op + "(b) FROM tbl WHERE
i=1").returns(1L).check();
+
+ // Check nulls.
+ assertQuery("SELECT BIT_" + op + "(t) FROM tbl WHERE t is
null").returns(NULL_RESULT).check();
+ assertQuery("SELECT BIT_" + op + "(s) FROM tbl WHERE s is
null").returns(NULL_RESULT).check();
+ assertQuery("SELECT BIT_" + op + "(i) FROM tbl WHERE i is
null").returns(NULL_RESULT).check();
+ assertQuery("SELECT BIT_" + op + "(b) FROM tbl WHERE b is
null").returns(NULL_RESULT).check();
+
+ // Check 1 value and null.
+ assertQuery("SELECT BIT_" + op + "(t) FROM tbl WHERE i=1 or i is
null").returns((byte)1).check();
+ assertQuery("SELECT BIT_" + op + "(s) FROM tbl WHERE i=1 or i is
null").returns((short)1).check();
+ assertQuery("SELECT BIT_" + op + "(i) FROM tbl WHERE i=1 or i is
null").returns(1).check();
+ assertQuery("SELECT BIT_" + op + "(b) FROM tbl WHERE i=1 or i is
null").returns(1L).check();
+
+ // Check not existing.
+ for (String col : F.asList("t", "s", "i", "b", "t + s", "s + i",
"i + b"))
+ assertQuery("SELECT BIT_" + op + "(" + col + ") FROM tbl WHERE
i=200").returns(NULL_RESULT).check();
+ }
+ }
+
+ /** */
+ @Test
+ public void testBitwiseLeastRestrictive() {
+ sql("CREATE TABLE tbl (t TINYINT, s SMALLINT, i INT, b BIGINT) WITH "
+ atomicity());
+
+ for (int i = 0; i < 10; ++i)
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", i, i, i, i);
+
+ // Check least restrictive.
+ assertQuery("SELECT BIT_AND(t + s) FROM tbl WHERE i=1 or i=7 or
i=200").returns((short)2).check();
+ assertQuery("SELECT BIT_AND(s + i) FROM tbl WHERE i=1 or i=7 or
i=200").returns(2).check();
+ assertQuery("SELECT BIT_AND(i + b) FROM tbl WHERE i=1 or i=7 or
i=200").returns(2L).check();
+
+ assertQuery("SELECT BIT_OR(t + s) FROM tbl WHERE i=2 or i=4 or
i=200").returns((short)12).check();
+ assertQuery("SELECT BIT_OR(s + i) FROM tbl WHERE i=2 or i=4 or
i=200").returns(12).check();
+ assertQuery("SELECT BIT_OR(i + b) FROM tbl WHERE i=2 or i=4 or
i=200").returns(12L).check();
+
+ assertQuery("SELECT BIT_XOR(t + s) FROM tbl WHERE i=6 or i=2 or
i=200").returns((short)8).check();
+ assertQuery("SELECT BIT_XOR(s + i) FROM tbl WHERE i=6 or i=2 or
i=200").returns(8).check();
+ assertQuery("SELECT BIT_XOR(i + b) FROM tbl WHERE i=6 or i=2 or
i=200").returns(8L).check();
+ }
+
+ /** */
+ @Test
+ public void testBitwiseGrouping() {
+ sql("CREATE TABLE tbl (g INT, i INT) WITH " + atomicity());
+
+ for (int i = 0; i < 3; ++i) {
+ sql("INSERT INTO tbl values (?, ?)", i, null);
+
+ for (int j = 0; j < 9; ++j)
+ sql("INSERT INTO tbl values (?, ?)", i, j);
+ }
+
+ assertQuery("SELECT g + 1, BIT_AND(i) from tbl where i in (3,7) group
by g")
+ .returns(1, 3)
+ .returns(2, 3)
+ .returns(3, 3)
+ .check();
+
+ assertQuery("SELECT g + 1, BIT_OR(i) from tbl group by g")
+ .returns(1, 15)
+ .returns(2, 15)
+ .returns(3, 15)
+ .check();
+
+ assertQuery("SELECT g + 1, BIT_XOR(i) from tbl where i in (1,2,4,8)
group by g")
+ .returns(1, 15)
+ .returns(2, 15)
+ .returns(3, 15)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testBitwiseResults() {
+ sql("CREATE TABLE tbl (t TINYINT, s SMALLINT, i INT, b BIGINT) WITH "
+ atomicity());
+
+ for (int i = 0; i < 10; ++i)
+ sql("INSERT INTO tbl values (?, ?, ?, ?)", i, i, i, i);
+
+ assertQuery("SELECT BIT_AND(t) FROM tbl WHERE i BETWEEN 2 and 3 or
i=200").returns((byte)2).check();
+ assertQuery("SELECT BIT_AND(s) FROM tbl WHERE i BETWEEN 2 and 3 or
i=200").returns((short)2).check();
+ assertQuery("SELECT BIT_AND(i) FROM tbl WHERE i BETWEEN 2 and 3 or
i=200").returns(2).check();
+ assertQuery("SELECT BIT_AND(b) FROM tbl WHERE i BETWEEN 2 and 3 or
i=200").returns(2L).check();
+
+ assertQuery("SELECT BIT_XOR(t) FROM tbl WHERE i=8 or i=9 or
i=200").returns((byte)1).check();
+ assertQuery("SELECT BIT_XOR(s) FROM tbl WHERE i=8 or i=9 or
i=200").returns((short)1).check();
+ assertQuery("SELECT BIT_XOR(i) FROM tbl WHERE i=8 or i=9 or
i=200").returns(1).check();
+ assertQuery("SELECT BIT_XOR(b) FROM tbl WHERE i=8 or i=9 or
i=200").returns(1L).check();
+
+ assertQuery("SELECT BIT_OR(t) FROM tbl WHERE i=8 or i=1 or
i=200").returns((byte)9).check();
+ assertQuery("SELECT BIT_OR(s) FROM tbl WHERE i=8 or i=1 or
i=200").returns((short)9).check();
+ assertQuery("SELECT BIT_OR(i) FROM tbl WHERE i=8 or i=1 or
i=200").returns(9).check();
+ assertQuery("SELECT BIT_OR(b) FROM tbl WHERE i=8 or i=1 or
i=200").returns(9L).check();
+
+ for (String op : F.asList("AND", "XOR")) {
+ String where = "AND".equals(op) ? "i<100" : "i=7 or i=4 or i=2 or
i=1";
+
+ assertQuery("SELECT BIT_" + op + "(t) FROM tbl WHERE " +
where).returns((byte)0).check();
+ assertQuery("SELECT BIT_" + op + "(s) FROM tbl WHERE " +
where).returns((short)0).check();
+ assertQuery("SELECT BIT_" + op + "(i) FROM tbl WHERE " +
where).returns(0).check();
+ assertQuery("SELECT BIT_" + op + "(b) FROM tbl WHERE " +
where).returns(0L).check();
+ }
+
+ sql("INSERT INTO tbl values (1, 1, 1, 1)");
+
+ assertQuery("SELECT BIT_XOR(i) from tbl where i=1").returns(0).check();
+ assertQuery("SELECT BIT_XOR(DISTINCT i) from tbl where
i=1").returns(1).check();
+ }
+
/** */
@Test
public void testCountOfNonNumericField() {
diff --git
a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test_ignore
b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test
similarity index 86%
rename from
modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test_ignore
rename to modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test
index 082fe2cd078..64a9f26409c 100644
--- a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test_ignore
+++ b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_and.test
@@ -10,17 +10,13 @@ SELECT BIT_AND(3), BIT_AND(NULL)
3
NULL
-# test on a sequence
-statement ok
-CREATE SEQUENCE seq;
-
query I
-SELECT BIT_AND(nextval('seq'))
+SELECT BIT_AND(1)
----
1
query I
-SELECT BIT_AND(nextval('seq'))
+SELECT BIT_AND(2)
----
2
diff --git
a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test_ignore
b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test
similarity index 86%
rename from
modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test_ignore
rename to modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test
index 1fe325e77d4..e0ae5060ec7 100644
--- a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test_ignore
+++ b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_or.test
@@ -10,17 +10,13 @@ SELECT BIT_OR(3), BIT_OR(NULL)
3
NULL
-# test on a sequence
-statement ok
-CREATE SEQUENCE seq;
-
query I
-SELECT BIT_OR(nextval('seq'))
+SELECT BIT_OR(1)
----
1
query I
-SELECT BIT_OR(nextval('seq'))
+SELECT BIT_OR(2)
----
2
diff --git
a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test_ignore
b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test
similarity index 86%
rename from
modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test_ignore
rename to modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test
index 4b9fb0b4fba..d16510dfcc6 100644
--- a/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test_ignore
+++ b/modules/calcite/src/test/sql/aggregate/aggregates/test_bit_xor.test
@@ -10,17 +10,13 @@ SELECT BIT_XOR(3), BIT_XOR(NULL)
3
NULL
-# test on a sequence
-statement ok
-CREATE SEQUENCE seq;
-
query I
-SELECT BIT_XOR(nextval('seq'))
+SELECT BIT_XOR(1)
----
1
query I
-SELECT BIT_XOR(nextval('seq'))
+SELECT BIT_XOR(2)
----
2