Repository: phoenix Updated Branches: refs/heads/txn 4906b8b2b -> 42a1ffc7f
Added testDropColumn using timestamps Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/42a1ffc7 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/42a1ffc7 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/42a1ffc7 Branch: refs/heads/txn Commit: 42a1ffc7f4496a44b76023391c12745f9cae24a5 Parents: 4906b8b Author: Thomas D'Silva <twdsi...@gmail.com> Authored: Mon Apr 20 17:17:19 2015 -0700 Committer: Thomas D'Silva <twdsi...@gmail.com> Committed: Mon Apr 20 17:17:24 2015 -0700 ---------------------------------------------------------------------- .../phoenix/transactions/TransactionIT.java | 36 +-------- .../transactions/TxPointInTimeQueryIT.java | 78 ++++++++++++++++++++ .../java/org/apache/phoenix/query/BaseTest.java | 14 ++-- 3 files changed, 90 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/42a1ffc7/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java index 8babaae..6530ef6 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TransactionIT.java @@ -25,8 +25,6 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map; -import co.cask.tephra.TxConstants; - import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT; import org.apache.phoenix.end2end.Shadower; import org.apache.phoenix.exception.SQLExceptionCode; @@ -38,6 +36,8 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import co.cask.tephra.TxConstants; + import com.google.common.collect.Maps; public class TransactionIT extends BaseHBaseManagedTimeIT { @@ -46,33 +46,7 @@ public class TransactionIT extends BaseHBaseManagedTimeIT { @Before public void setUp() throws SQLException { - Connection conn = DriverManager.getConnection(getUrl()); - try { - conn.createStatement().execute( - "create table "+ FULL_TABLE_NAME + "(" - + " varchar_pk VARCHAR NOT NULL, " - + " char_pk CHAR(6) NOT NULL, " - + " int_pk INTEGER NOT NULL, " - + " long_pk BIGINT NOT NULL, " - + " decimal_pk DECIMAL(31, 10) NOT NULL, " - + " date_pk DATE NOT NULL, " - + " a.varchar_col1 VARCHAR, " - + " a.char_col1 CHAR(10), " - + " a.int_col1 INTEGER, " - + " a.long_col1 BIGINT, " - + " a.decimal_col1 DECIMAL(31, 10), " - + " a.date1 DATE, " - + " b.varchar_col2 VARCHAR, " - + " b.char_col2 CHAR(10), " - + " b.int_col2 INTEGER, " - + " b.long_col2 BIGINT, " - + " b.decimal_col2 DECIMAL(31, 10), " - + " b.date2 DATE " - + " CONSTRAINT pk PRIMARY KEY (varchar_pk, char_pk, int_pk, long_pk DESC, decimal_pk, date_pk)) " - + "TRANSACTIONAL=true"); - } finally { - conn.close(); - } + ensureTableCreated(getUrl(), TRANSACTIONAL_DATA_TABLE); } @BeforeClass @@ -289,7 +263,5 @@ public class TransactionIT extends BaseHBaseManagedTimeIT { conn1.close(); } } - - - + } http://git-wip-us.apache.org/repos/asf/phoenix/blob/42a1ffc7/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java new file mode 100644 index 0000000..2a468b3 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/transactions/TxPointInTimeQueryIT.java @@ -0,0 +1,78 @@ +/* + * 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.transactions; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.fail; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.util.Properties; + +import org.apache.phoenix.end2end.BaseClientManagedTimeIT; +import org.apache.phoenix.schema.ColumnNotFoundException; +import org.apache.phoenix.util.PhoenixRuntime; +import org.apache.phoenix.util.PropertiesUtil; +import org.junit.Before; +import org.junit.Test; + +public class TxPointInTimeQueryIT extends BaseClientManagedTimeIT { + + protected long ts; + + @Before + public void initTable() throws Exception { + ts = nextTimestamp(); + } + + @Test + public void testDropColumn() throws Exception { + Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); + props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts)); + Connection conn = DriverManager.getConnection(getUrl(), props); + try { + conn.createStatement() + .execute( + "CREATE TABLE t (k VARCHAR NOT NULL PRIMARY KEY, v1 VARCHAR) TRANSACTIONAL=true"); + + props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 10)); + conn = DriverManager.getConnection(getUrl(), props); + // drop a column + conn.createStatement().execute("ALTER TABLE t DROP COLUMN v1"); + + props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 11)); + conn = DriverManager.getConnection(getUrl(), props); + String selectQuery = "SELECT v1 FROM t"; + try { + conn.createStatement().executeQuery(selectQuery); + fail(); + } catch (ColumnNotFoundException e) { + } + + props.put(PhoenixRuntime.CURRENT_SCN_ATTRIB, Long.toString(ts + 5)); + conn = DriverManager.getConnection(getUrl(), props); + ResultSet rs = conn.createStatement().executeQuery(selectQuery); + assertFalse(rs.next()); + } finally { + conn.close(); + } + } + +} http://git-wip-us.apache.org/repos/asf/phoenix/blob/42a1ffc7/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java index 4ab438b..ed8c29b 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java @@ -81,6 +81,7 @@ import static org.apache.phoenix.util.TestUtil.STABLE_NAME; import static org.apache.phoenix.util.TestUtil.TABLE_WITH_ARRAY; import static org.apache.phoenix.util.TestUtil.TABLE_WITH_SALTING; import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.apache.phoenix.util.TestUtil.TRANSACTIONAL_DATA_TABLE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -110,12 +111,6 @@ import java.util.concurrent.TimeUnit; import javax.annotation.Nonnull; -import co.cask.tephra.TransactionManager; -import co.cask.tephra.TxConstants; -import co.cask.tephra.distributed.TransactionService; -import co.cask.tephra.metrics.TxMetricsCollector; -import co.cask.tephra.persist.InMemoryTransactionStateStorage; - import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseTestingUtility; @@ -156,6 +151,12 @@ import org.junit.rules.TemporaryFolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import co.cask.tephra.TransactionManager; +import co.cask.tephra.TxConstants; +import co.cask.tephra.distributed.TransactionService; +import co.cask.tephra.metrics.TxMetricsCollector; +import co.cask.tephra.persist.InMemoryTransactionStateStorage; + import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Sets; @@ -417,6 +418,7 @@ public abstract class BaseTest { " kv bigint)\n"); builder.put(INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + INDEX_DATA_TABLE + TEST_TABLE_SCHEMA + "IMMUTABLE_ROWS=true"); builder.put(MUTABLE_INDEX_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + MUTABLE_INDEX_DATA_TABLE + TEST_TABLE_SCHEMA); + builder.put(TRANSACTIONAL_DATA_TABLE, "create table " + INDEX_DATA_SCHEMA + QueryConstants.NAME_SEPARATOR + TRANSACTIONAL_DATA_TABLE + TEST_TABLE_SCHEMA + "TRANSACTIONAL=true"); builder.put("SumDoubleTest","create table SumDoubleTest" + " (id varchar not null primary key, d DOUBLE, f FLOAT, ud UNSIGNED_DOUBLE, uf UNSIGNED_FLOAT, i integer, de decimal)"); builder.put(JOIN_ORDER_TABLE_FULL_NAME, "create table " + JOIN_ORDER_TABLE_FULL_NAME +