Repository: phoenix Updated Branches: refs/heads/master 13aaf8954 -> 5574811dd
PHOENIX-2858 Add 'Transactional' as a column in the JDBC table metadata (Geoffrey Jacoby) Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/5574811d Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/5574811d Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/5574811d Branch: refs/heads/master Commit: 5574811ddfe24a7f78ec875d3591439c32433f47 Parents: 13aaf89 Author: James Taylor <[email protected]> Authored: Tue Apr 26 16:53:14 2016 -0700 Committer: James Taylor <[email protected]> Committed: Tue Apr 26 16:58:42 2016 -0700 ---------------------------------------------------------------------- .../end2end/QueryDatabaseMetaDataIT.java | 1 + .../org/apache/phoenix/tx/TransactionIT.java | 29 ++++++++++++++++++++ .../phoenix/jdbc/PhoenixDatabaseMetaData.java | 3 +- 3 files changed, 32 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/5574811d/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java index ccb5b5a..1d0f767 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/QueryDatabaseMetaDataIT.java @@ -146,6 +146,7 @@ public class QueryDatabaseMetaDataIT extends BaseClientManagedTimeIT { assertEquals(CUSTOM_ENTITY_DATA_SCHEMA_NAME, rs.getString("TABLE_SCHEM")); assertEquals(CUSTOM_ENTITY_DATA_NAME, rs.getString("TABLE_NAME")); assertEquals(PTableType.TABLE.toString(), rs.getString("TABLE_TYPE")); + assertEquals("false", rs.getString(PhoenixDatabaseMetaData.TRANSACTIONAL)); rs = dbmd.getTables(null, CUSTOM_ENTITY_DATA_SCHEMA_NAME, CUSTOM_ENTITY_DATA_NAME, null); assertTrue(rs.next()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/5574811d/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java index 1fd9828..a06ca85 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/tx/TransactionIT.java @@ -32,6 +32,7 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.sql.DatabaseMetaData; import java.util.List; import java.util.Map; import java.util.Properties; @@ -865,4 +866,32 @@ public class TransactionIT extends BaseHBaseManagedTimeIT { assertEquals(100,upsertCount); conn.close(); } + + @Test + public void testTransactionalTableMetadata() throws SQLException { + + try (Connection conn = DriverManager.getConnection(getUrl())) { + String transactTableName = "TR"; + Statement stmt = conn.createStatement(); + stmt.execute("CREATE TABLE " + transactTableName + " (k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) " + + "TRANSACTIONAL=true"); + conn.commit(); + + DatabaseMetaData dbmd = conn.getMetaData(); + ResultSet rs = dbmd.getTables(null, null, transactTableName, null); + assertTrue(rs.next()); + assertEquals("Transactional table was not marked as transactional in JDBC API.", + "true", rs.getString(PhoenixDatabaseMetaData.TRANSACTIONAL)); + + String nonTransactTableName = "NOTR"; + Statement stmt2 = conn.createStatement(); + stmt2.execute("CREATE TABLE " + nonTransactTableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR) "); + conn.commit(); + + ResultSet rs2 = dbmd.getTables(null, null, nonTransactTableName, null); + assertTrue(rs2.next()); + assertEquals("Non-transactional table was marked as transactional in JDBC API.", + "false", rs2.getString(PhoenixDatabaseMetaData.TRANSACTIONAL)); + } + } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/5574811d/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java index 2fffc84..8aae013 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/jdbc/PhoenixDatabaseMetaData.java @@ -1040,7 +1040,8 @@ public class PhoenixDatabaseMetaData implements DatabaseMetaData { MULTI_TENANT + "," + VIEW_STATEMENT + "," + SQLViewTypeFunction.NAME + "(" + VIEW_TYPE + ") AS " + VIEW_TYPE + "," + - SQLIndexTypeFunction.NAME + "(" + INDEX_TYPE + ") AS " + INDEX_TYPE + + SQLIndexTypeFunction.NAME + "(" + INDEX_TYPE + ") AS " + INDEX_TYPE + "," + + TRANSACTIONAL + " from " + SYSTEM_CATALOG + " " + SYSTEM_CATALOG_ALIAS + " where " + COLUMN_NAME + " is null" + " and " + COLUMN_FAMILY + " is null" +
