You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by la...@apache.org on 2019/09/25 17:34:41 UTC

[phoenix] branch 4.x-HBase-1.4 updated: PHOENIX-5463 Remove AndExpressionTest and OrExpressionTest since the author did not add a license header.

This is an automated email from the ASF dual-hosted git repository.

larsh pushed a commit to branch 4.x-HBase-1.4
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/4.x-HBase-1.4 by this push:
     new a4159c1  PHOENIX-5463 Remove AndExpressionTest and OrExpressionTest since the author did not add a license header.
a4159c1 is described below

commit a4159c1ba013100a6891303183b4ca0e7d577e6a
Author: Lars Hofhansl <la...@apache.org>
AuthorDate: Wed Sep 25 10:32:29 2019 -0700

    PHOENIX-5463 Remove AndExpressionTest and OrExpressionTest since the author did not add a license header.
---
 .../phoenix/expression/AndExpressionTest.java      | 314 ---------------------
 .../phoenix/expression/OrExpressionTest.java       | 310 --------------------
 2 files changed, 624 deletions(-)

diff --git a/phoenix-core/src/test/java/org/apache/phoenix/expression/AndExpressionTest.java b/phoenix-core/src/test/java/org/apache/phoenix/expression/AndExpressionTest.java
deleted file mode 100644
index a223a19..0000000
--- a/phoenix-core/src/test/java/org/apache/phoenix/expression/AndExpressionTest.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.phoenix.expression;
-
-import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.PBaseColumn;
-import org.apache.phoenix.schema.PColumn;
-import org.apache.phoenix.schema.PName;
-import org.apache.phoenix.schema.PNameFactory;
-import org.apache.phoenix.schema.SortOrder;
-import org.apache.phoenix.schema.tuple.MultiKeyValueTuple;
-import org.apache.phoenix.schema.types.PBoolean;
-import org.apache.phoenix.schema.types.PDataType;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class AndExpressionTest {
-
-    private AndExpression createAnd(Expression lhs, Expression rhs) {
-        return new AndExpression(Arrays.asList(lhs, rhs));
-    }
-
-    private AndExpression createAnd(Boolean x, Boolean y) {
-        return createAnd(LiteralExpression.newConstant(x), LiteralExpression.newConstant(y));
-    }
-
-    private void testImmediateSingle(Boolean expected, Boolean lhs, Boolean rhs) {
-        AndExpression and = createAnd(lhs, rhs);
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple();
-        boolean success = and.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-    // Evaluating AND when values of both sides are known should immediately succeed
-    // and return the same result regardless of order.
-    private void testImmediate(Boolean expected, Boolean a, Boolean b) {
-        testImmediateSingle(expected, a, b);
-        testImmediateSingle(expected, b, a);
-    }
-
-    private PColumn pcolumn(final String name) {
-        return new PBaseColumn() {
-            @Override public PName getName() {
-                return PNameFactory.newName(name);
-            }
-
-            @Override public PDataType getDataType() {
-                return PBoolean.INSTANCE;
-            }
-
-            @Override public PName getFamilyName() {
-                return PNameFactory.newName(QueryConstants.DEFAULT_COLUMN_FAMILY);
-            }
-
-            @Override public int getPosition() {
-                return 0;
-            }
-
-            @Override public Integer getArraySize() {
-                return null;
-            }
-
-            @Override public byte[] getViewConstant() {
-                return new byte[0];
-            }
-
-            @Override public boolean isViewReferenced() {
-                return false;
-            }
-
-            @Override public String getExpressionStr() {
-                return null;
-            }
-
-            @Override public boolean isRowTimestamp() {
-                return false;
-            }
-
-            @Override public boolean isDynamic() {
-                return false;
-            }
-
-            @Override public byte[] getColumnQualifierBytes() {
-                return null;
-            }
-
-            @Override public long getTimestamp() {
-                return 0;
-            }
-
-            @Override public boolean isDerived() {
-                return false;
-            }
-
-            @Override public boolean isExcluded() {
-                return false;
-            }
-
-            @Override public SortOrder getSortOrder() {
-                return null;
-            }
-        };
-    }
-
-    private KeyValueColumnExpression kvExpr(final String name) {
-        return new KeyValueColumnExpression(pcolumn(name));
-    }
-
-    private Cell createCell(String name, Boolean value) {
-        byte[] valueBytes = value == null ? null : value ? PBoolean.TRUE_BYTES : PBoolean.FALSE_BYTES;
-        return CellUtil.createCell(
-            Bytes.toBytes("row"),
-            QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES,
-            Bytes.toBytes(name),
-            1,
-            KeyValue.Type.Put.getCode(),
-            valueBytes);
-    }
-
-    private void testPartialOneSideFirst(Boolean expected, Boolean lhs, Boolean rhs, boolean leftFirst) {
-        KeyValueColumnExpression lhsExpr = kvExpr("LHS");
-        KeyValueColumnExpression rhsExpr = kvExpr("RHS");
-        AndExpression and = createAnd(lhsExpr, rhsExpr);
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple(Collections.<Cell>emptyList());
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-
-        // with no data available, should fail
-        boolean success = and.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 1 datum available, should fail
-        if (leftFirst) {
-            tuple.setKeyValues(Collections.singletonList(createCell("LHS", lhs)));
-        } else {
-            tuple.setKeyValues(Collections.singletonList(createCell("RHS", rhs)));
-        }
-        success = and.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 2 data available, should succeed
-        tuple.setKeyValues(Arrays.asList(createCell("LHS", lhs), createCell("RHS", rhs)));
-        success = and.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-    private void testPartialEvaluation(Boolean expected, Boolean x, Boolean y, boolean xFirst) {
-        testPartialOneSideFirst(expected, x, y, xFirst);
-        testPartialOneSideFirst(expected, y, x, !xFirst);
-    }
-
-    private void testShortCircuitOneSideFirst(Boolean expected, Boolean lhs, Boolean rhs, boolean leftFirst) {
-        KeyValueColumnExpression lhsExpr = kvExpr("LHS");
-        KeyValueColumnExpression rhsExpr = kvExpr("RHS");
-        AndExpression and = createAnd(lhsExpr, rhsExpr);
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple(Collections.<Cell>emptyList());
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-
-        // with no data available, should fail
-        boolean success = and.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 1 datum available, should succeed
-        if (leftFirst) {
-            tuple.setKeyValues(Collections.singletonList(createCell("LHS", lhs)));
-        } else {
-            tuple.setKeyValues(Collections.singletonList(createCell("RHS", rhs)));
-        }
-        success = and.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-
-    private void testShortCircuit(Boolean expected, Boolean x, Boolean y, boolean xFirst) {
-        testShortCircuitOneSideFirst(expected, x, y, xFirst);
-        testShortCircuitOneSideFirst(expected, y, x, !xFirst);
-    }
-
-    @Test
-    public void testImmediateCertainty() {
-        testImmediate(true, true, true);
-        testImmediate(false, false, true);
-        testImmediate(false, false, false);
-    }
-
-    @Test
-    public void testImmediateUncertainty() {
-        testImmediate(null, true, null);
-        testImmediate(false, false, null);
-        testImmediate(null, null, null);
-    }
-
-    @Test
-    public void testPartialCertainty() {
-        // T AND T = T
-        // must evaluate both sides, regardless of order
-        testPartialEvaluation(true, true, true, true);
-        testPartialEvaluation(true, true, true, false);
-
-        // T AND F = F
-        // must evaluate both sides if TRUE is evaluated first
-        testPartialEvaluation(false, true, false, true);
-        testPartialEvaluation(false, false, true, false);
-    }
-
-    @Test
-    public void testPartialUncertainty() {
-        // T AND NULL = NULL
-        // must evaluate both sides, regardless of order of values or evaluation
-        testPartialEvaluation(null, true, null, true);
-        testPartialEvaluation(null, true, null, false);
-        testPartialEvaluation(null, null, true, true);
-        testPartialEvaluation(null, null, true, false);
-
-        // must evaluate both sides if NULL is evaluated first
-
-        // F AND NULL = FALSE
-        testPartialEvaluation(false, null, false, true);
-        testPartialEvaluation(false, false, null, false);
-
-        // NULL AND NULL = NULL
-        testPartialEvaluation(null, null, null, true);
-        testPartialEvaluation(null, null, null, false);
-    }
-
-    @Test
-    public void testShortCircuitCertainty() {
-        // need only to evaluate one side if FALSE is evaluated first
-
-        // F AND F = F
-        testShortCircuit(false, false, false, true);
-        testShortCircuit(false, false, false, false);
-
-        // T AND F = F
-        testShortCircuit(false, false, true, true);
-        testShortCircuit(false, true, false, false);
-    }
-
-    @Test
-    public void testShortCircuitUncertainty() {
-        // need only to evaluate one side if FALSE is evaluated first
-
-        // F AND NULL = FALSE
-        testShortCircuit(false, false, null, true);
-        testShortCircuit(false, null, false, false);
-    }
-
-    @Test
-    public void testTruthTable() {
-        // See: https://en.wikipedia.org/wiki/Null_(SQL)#Comparisons_with_NULL_and_the_three-valued_logic_(3VL)
-        Boolean[][] testCases = new Boolean[][] {
-                //              should short circuit?
-                //    X,     Y, if X first, if Y first, X AND Y,
-                {  true,  true,      false,      false,    true, },
-                {  true, false,      false,       true,   false, },
-                { false, false,       true,       true,   false, },
-                {  true,  null,      false,      false,    null, },
-                { false,  null,       true,      false,   false, },
-                {  null,  null,      false,      false,    null, },
-        };
-
-        for (Boolean[] testCase : testCases) {
-            Boolean x = testCase[0];
-            Boolean y = testCase[1];
-            boolean shouldShortCircuitWhenXEvaluatedFirst = testCase[2];
-            boolean shouldShortCircuitWhenYEvaluatedFirst = testCase[3];
-            Boolean expected = testCase[4];
-
-            // test both directions
-            testImmediate(expected, x, y);
-
-            if (shouldShortCircuitWhenXEvaluatedFirst) {
-                testShortCircuit(expected, x, y, true);
-            } else {
-                testPartialEvaluation(expected, x, y, true);
-            }
-
-            if (shouldShortCircuitWhenYEvaluatedFirst) {
-                testShortCircuit(expected, x, y, false);
-            } else {
-                testPartialEvaluation(expected, x, y, false);
-            }
-        }
-    }
-}
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/expression/OrExpressionTest.java b/phoenix-core/src/test/java/org/apache/phoenix/expression/OrExpressionTest.java
deleted file mode 100644
index 6d827da..0000000
--- a/phoenix-core/src/test/java/org/apache/phoenix/expression/OrExpressionTest.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.phoenix.expression;
-
-import org.apache.hadoop.hbase.Cell;
-import org.apache.hadoop.hbase.CellUtil;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.phoenix.query.QueryConstants;
-import org.apache.phoenix.schema.PBaseColumn;
-import org.apache.phoenix.schema.PColumn;
-import org.apache.phoenix.schema.PName;
-import org.apache.phoenix.schema.PNameFactory;
-import org.apache.phoenix.schema.SortOrder;
-import org.apache.phoenix.schema.tuple.MultiKeyValueTuple;
-import org.apache.phoenix.schema.types.PBoolean;
-import org.apache.phoenix.schema.types.PDataType;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-public class OrExpressionTest {
-
-    private OrExpression createOr(Expression lhs, Expression rhs) {
-        return new OrExpression(Arrays.asList(lhs, rhs));
-    }
-
-    private OrExpression createOr(Boolean x, Boolean y) {
-        return createOr(LiteralExpression.newConstant(x), LiteralExpression.newConstant(y));
-    }
-
-    private void testImmediateSingle(Boolean expected, Boolean lhs, Boolean rhs) {
-        OrExpression or = createOr(lhs, rhs);
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple();
-        boolean success = or.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-    // Evaluating OR when values of both sides are known should immediately succeed
-    // and return the same result regardless of order.
-    private void testImmediate(Boolean expected, Boolean a, Boolean b) {
-        testImmediateSingle(expected, a, b);
-        testImmediateSingle(expected, b, a);
-    }
-
-    private PColumn pcolumn(final String name) {
-        return new PBaseColumn() {
-            @Override public PName getName() {
-                return PNameFactory.newName(name);
-            }
-
-            @Override public PDataType getDataType() {
-                return PBoolean.INSTANCE;
-            }
-
-            @Override public PName getFamilyName() {
-                return PNameFactory.newName(QueryConstants.DEFAULT_COLUMN_FAMILY);
-            }
-
-            @Override public int getPosition() {
-                return 0;
-            }
-
-            @Override public Integer getArraySize() {
-                return null;
-            }
-
-            @Override public byte[] getViewConstant() {
-                return new byte[0];
-            }
-
-            @Override public boolean isViewReferenced() {
-                return false;
-            }
-
-            @Override public String getExpressionStr() {
-                return null;
-            }
-
-            @Override public boolean isRowTimestamp() {
-                return false;
-            }
-
-            @Override public boolean isDynamic() {
-                return false;
-            }
-
-            @Override public byte[] getColumnQualifierBytes() {
-                return null;
-            }
-
-            @Override public long getTimestamp() {
-                return 0;
-            }
-
-            @Override public boolean isDerived() {
-                return false;
-            }
-
-            @Override public boolean isExcluded() {
-                return false;
-            }
-
-            @Override public SortOrder getSortOrder() {
-                return null;
-            }
-        };
-    }
-
-    private KeyValueColumnExpression kvExpr(final String name) {
-        return new KeyValueColumnExpression(pcolumn(name));
-    }
-
-    private Cell createCell(String name, Boolean value) {
-        byte[] valueBytes = value == null ? null : value ? PBoolean.TRUE_BYTES : PBoolean.FALSE_BYTES;
-        return CellUtil.createCell(
-                Bytes.toBytes("row"),
-                QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES,
-                Bytes.toBytes(name),
-                1,
-                KeyValue.Type.Put.getCode(),
-                valueBytes);
-    }
-
-    private void testPartialOneSideFirst(Boolean expected, Boolean lhs, Boolean rhs, boolean leftFirst) {
-        KeyValueColumnExpression lhsExpr = kvExpr("LHS");
-        KeyValueColumnExpression rhsExpr = kvExpr("RHS");
-        OrExpression or = createOr(lhsExpr, rhsExpr);
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple(Collections.<Cell>emptyList());
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-
-        // with no data available, should fail
-        boolean success = or.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 1 datum available, should fail
-        if (leftFirst) {
-            tuple.setKeyValues(Collections.singletonList(createCell("LHS", lhs)));
-        } else {
-            tuple.setKeyValues(Collections.singletonList(createCell("RHS", rhs)));
-        }
-        success = or.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 2 data available, should succeed
-        tuple.setKeyValues(Arrays.asList(createCell("LHS", lhs), createCell("RHS", rhs)));
-        success = or.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-    private void testPartialEvaluation(Boolean expected, Boolean x, Boolean y, boolean xFirst) {
-        testPartialOneSideFirst(expected, x, y, xFirst);
-        testPartialOneSideFirst(expected, y, x, !xFirst);
-    }
-
-    private void testShortCircuitOneSideFirst(Boolean expected, Boolean lhs, Boolean rhs, boolean leftFirst) {
-        KeyValueColumnExpression lhsExpr = kvExpr("LHS");
-        KeyValueColumnExpression rhsExpr = kvExpr("RHS");
-        OrExpression or = createOr(lhsExpr, rhsExpr);
-        MultiKeyValueTuple tuple = new MultiKeyValueTuple(Collections.<Cell>emptyList());
-        ImmutableBytesWritable out = new ImmutableBytesWritable();
-
-        // with no data available, should fail
-        boolean success = or.evaluate(tuple, out);
-        assertFalse(success);
-
-        // with 1 datum available, should succeed
-        if (leftFirst) {
-            tuple.setKeyValues(Collections.singletonList(createCell("LHS", lhs)));
-        } else {
-            tuple.setKeyValues(Collections.singletonList(createCell("RHS", rhs)));
-        }
-        success = or.evaluate(tuple, out);
-        assertTrue(success);
-        assertEquals(expected, PBoolean.INSTANCE.toObject(out));
-    }
-
-
-    private void testShortCircuit(Boolean expected, Boolean x, Boolean y, boolean xFirst) {
-        testShortCircuitOneSideFirst(expected, x, y, xFirst);
-        testShortCircuitOneSideFirst(expected, y, x, !xFirst);
-    }
-
-    @Test
-    public void testImmediateCertainty() {
-        testImmediate(true, true, true);
-        testImmediate(true, false, true);
-        testImmediate(false, false, false);
-    }
-
-    @Test
-    public void testImmediateUncertainty() {
-        testImmediate(true, true, null);
-        testImmediate(null, false, null);
-        testImmediate(null, null, null);
-    }
-
-    @Test
-    public void testPartialCertainty() {
-        // must evaluate both sides if FALSE is evaluated first
-
-        // F OR F = F
-        testPartialEvaluation(false, false, false, true);
-        testPartialEvaluation(false, false, false, false);
-
-        // T OR F = T
-        testPartialEvaluation(true, false, true, true);
-        testPartialEvaluation(true, true, false, false);
-    }
-
-    @Test
-    public void testPartialUncertainty() {
-        // T OR NULL = NULL
-        testPartialEvaluation(true, null, true, true);
-        testPartialEvaluation(true, true, null, false);
-
-        // must evaluate both sides if NULL is evaluated first
-
-        // F OR NULL = NULL
-        testPartialEvaluation(null, null, false, true);
-        testPartialEvaluation(null, false, null, false);
-
-        // NULL OR NULL = NULL
-        testPartialEvaluation(null, null, null, true);
-        testPartialEvaluation(null, null, null, false);
-    }
-
-    @Test
-    public void testShortCircuitCertainty() {
-        // need only to evaluate one side if TRUE is evaluated first
-
-        // T OR T = T
-        testShortCircuit(true, true, true, true);
-        testShortCircuit(true, true, true, false);
-
-
-        // T OR F = F
-        testShortCircuit(true, true, false, true);
-        testShortCircuit(true, false, true, false);
-    }
-
-    @Test
-    public void testShortCircuitUncertainty() {
-        // need only to evaluate one side if TRUE is evaluated first
-        testShortCircuit(true, true, null, true);
-        testShortCircuit(true, null, true, false);
-    }
-
-    @Test
-    public void testTruthTable() {
-        // See: https://en.wikipedia.org/wiki/Null_(SQL)#Comparisons_with_NULL_and_the_three-valued_logic_(3VL)
-        Boolean[][] testCases = new Boolean[][] {
-            //              should short circuit?
-            //    X,     Y, if X first, if Y first, X OR Y,
-            {  true,  true,       true,       true,   true, },
-            {  true, false,       true,      false,   true, },
-            { false, false,      false,      false,  false, },
-            {  true,  null,       true,      false,   true, },
-            { false,  null,      false,      false,   null, },
-            {  null,  null,      false,      false,   null, },
-        };
-
-        for (Boolean[] testCase : testCases) {
-            Boolean x = testCase[0];
-            Boolean y = testCase[1];
-            boolean shouldShortCircuitWhenXEvaluatedFirst = testCase[2];
-            boolean shouldShortCircuitWhenYEvaluatedFirst = testCase[3];
-            Boolean expected = testCase[4];
-
-            // test both directions
-            testImmediate(expected, x, y);
-
-            if (shouldShortCircuitWhenXEvaluatedFirst) {
-                testShortCircuit(expected, x, y, true);
-            } else {
-                testPartialEvaluation(expected, x, y, true);
-            }
-
-            if (shouldShortCircuitWhenYEvaluatedFirst) {
-                testShortCircuit(expected, x, y, false);
-            } else {
-                testPartialEvaluation(expected, x, y, false);
-            }
-        }
-    }
-}