Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 5334a1512 -> a2c55410e


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/a2c55410
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a2c55410
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a2c55410

Branch: refs/heads/4.x-HBase-0.98
Commit: a2c55410e9effc15ad2f96defea0d3b658b3ce62
Parents: 5334a15
Author: James Taylor <[email protected]>
Authored: Tue Apr 26 16:53:14 2016 -0700
Committer: James Taylor <[email protected]>
Committed: Tue Apr 26 17:03:07 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/a2c55410/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 62b7306..abcf6ef 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/a2c55410/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 754ec09..1661dee 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/a2c55410/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 d98ebe3..b8e73ff 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" +

Reply via email to