| /** | |
| * 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.end2end; | |
| import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; | |
| import static org.junit.Assert.assertEquals; | |
| import static org.junit.Assert.assertFalse; | |
| import static org.junit.Assert.assertTrue; | |
| import java.sql.Connection; | |
| import java.sql.DriverManager; | |
| import java.sql.PreparedStatement; | |
| import java.sql.ResultSet; | |
| import java.sql.SQLException; | |
| import java.util.Properties; | |
| import org.apache.phoenix.util.PropertiesUtil; | |
| import org.junit.Test; | |
| public class EvaluationOfORIT extends BaseHBaseManagedTimeIT{ | |
| @Test | |
| public void testFalseOrFalse() throws SQLException { | |
| Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); | |
| Connection conn = DriverManager.getConnection(getUrl(), props); | |
| ResultSet rs = conn.createStatement().executeQuery("SELECT (FALSE OR FALSE) AS B FROM SYSTEM.CATALOG LIMIT 1"); | |
| assertTrue(rs.next()); | |
| assertFalse(rs.getBoolean(1)); | |
| conn.close(); | |
| } | |
| @Test | |
| public void testPKOrNotPKInOREvaluation() throws SQLException { | |
| Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); | |
| Connection conn = DriverManager.getConnection(getUrl(), props); | |
| conn.setAutoCommit(false); | |
| String create = "CREATE TABLE DIE ( ID INTEGER NOT NULL PRIMARY KEY,NAME VARCHAR(50))"; | |
| PreparedStatement createStmt = conn.prepareStatement(create); | |
| createStmt.execute(); | |
| PreparedStatement stmt = conn.prepareStatement( | |
| "upsert into " + | |
| "DIE VALUES (?, ?)"); | |
| stmt.setInt(1, 1); | |
| stmt.setString(2, "Tester1"); | |
| stmt.execute(); | |
| stmt.setInt(1,2); | |
| stmt.setString(2, "Tester2"); | |
| stmt.execute(); | |
| stmt.setInt(1,3); | |
| stmt.setString(2, "Tester3"); | |
| stmt.execute(); | |
| stmt.setInt(1,4); | |
| stmt.setString(2, "LikeTester1"); | |
| stmt.execute(); | |
| stmt.setInt(1,5); | |
| stmt.setString(2, "LikeTester2"); | |
| stmt.execute(); | |
| stmt.setInt(1,6); | |
| stmt.setString(2, "LikeTesterEnd"); | |
| stmt.execute(); | |
| stmt.setInt(1,7); | |
| stmt.setString(2, "LikeTesterEnd2"); | |
| stmt.execute(); | |
| stmt.setInt(1,8); | |
| stmt.setString(2, "Tester3"); | |
| stmt.execute(); | |
| stmt.setInt(1,9); | |
| stmt.setString(2, "Tester4"); | |
| stmt.execute(); | |
| stmt.setInt(1,10); | |
| stmt.setString(2, "Tester5"); | |
| stmt.execute(); | |
| stmt.setInt(1,11); | |
| stmt.setString(2, "Tester6"); | |
| stmt.execute(); | |
| stmt.setInt(1,12); | |
| stmt.setString(2, "tester6"); | |
| stmt.execute(); | |
| stmt.setInt(1,13); | |
| stmt.setString(2, "lester1"); | |
| stmt.execute(); | |
| stmt.setInt(1,14); | |
| stmt.setString(2, "le50ster1"); | |
| stmt.execute(); | |
| stmt.setInt(1,15); | |
| stmt.setString(2, "LE50ster1"); | |
| stmt.execute(); | |
| stmt.setInt(1,16); | |
| stmt.setString(2, "LiketesterEnd"); | |
| stmt.execute(); | |
| stmt.setInt(1,17); | |
| stmt.setString(2, "la50ster1"); | |
| stmt.execute(); | |
| stmt.setInt(1,18); | |
| stmt.setString(2, "lA50ster0"); | |
| stmt.execute(); | |
| stmt.setInt(1,19); | |
| stmt.setString(2, "lA50ster2"); | |
| stmt.execute(); | |
| stmt.setInt(1,20); | |
| stmt.setString(2, "la50ster0"); | |
| stmt.execute(); | |
| stmt.setInt(1,21); | |
| stmt.setString(2, "la50ster2"); | |
| stmt.execute(); | |
| stmt.setInt(1,22); | |
| stmt.setString(2, "La50ster3"); | |
| stmt.execute(); | |
| stmt.setInt(1,23); | |
| stmt.setString(2, "la50ster3"); | |
| stmt.execute(); | |
| stmt.setInt(1,24); | |
| stmt.setString(2, "l[50ster3"); | |
| stmt.execute(); | |
| stmt.setInt(1,25); | |
| stmt.setString(2, "Tester1"); | |
| stmt.execute(); | |
| stmt.setInt(1,26); | |
| stmt.setString(2, "Tester100"); | |
| stmt.execute(); | |
| conn.commit(); | |
| String select = "Select * from DIE where ID=6 or Name between 'Tester1' and 'Tester3'"; | |
| ResultSet rs; | |
| rs = conn.createStatement().executeQuery(select); | |
| assertTrue(rs.next()); | |
| assertEquals(1,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(2,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(3,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(6,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(8,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(25,rs.getInt(1)); | |
| assertTrue(rs.next()); | |
| assertEquals(26,rs.getInt(1)); | |
| conn.close(); | |
| } | |
| } |