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

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix.git


The following commit(s) were added to refs/heads/master by this push:
     new b1706df26e PHOENIX-7527 NPE thrown when extract table schema using 
sqlline. (#2079)
b1706df26e is described below

commit b1706df26eb5c3541cc052224a598fe3cdeb7cf0
Author: chaijunjie0101 <1340011...@qq.com>
AuthorDate: Tue Mar 18 16:46:09 2025 +0800

    PHOENIX-7527 NPE thrown when extract table schema using sqlline. (#2079)
---
 .../org/apache/phoenix/jdbc/PhoenixStatement.java  |  4 ++++
 .../apache/phoenix/end2end/ShowCreateTableIT.java  | 22 +++++++++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git 
a/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
 
b/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
index 8c0e5cafe9..826d73dd2a 100644
--- 
a/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
+++ 
b/phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java
@@ -430,6 +430,10 @@ public class PhoenixStatement implements 
PhoenixMonitoredStatement, SQLCloseable
                                         newResultSet(resultIterator, 
plan.getProjector(),
                                                 plan.getContext());
                                 // newResultset sets lastResultset
+                                // 
ExecutableShowCreateTable/ExecutableShowTablesStatement/ExecutableShowSchemasStatement
 using a delegateStmt
+                                // to compile a queryPlan, the resultSet will 
set to the delegateStmt, so need set resultSet
+                                // to the origin statement.
+                                setLastResultSet(rs);
                                 setLastQueryPlan(plan);
                                 setLastUpdateCount(NO_UPDATE);
                                 setLastUpdateTable(tableName == null ? 
TABLE_UNKNOWN : tableName);
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ShowCreateTableIT.java 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ShowCreateTableIT.java
index b9037e3b85..051281d18d 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ShowCreateTableIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ShowCreateTableIT.java
@@ -18,13 +18,13 @@
 package org.apache.phoenix.end2end;
 
 import org.apache.phoenix.util.SchemaUtil;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
+import java.sql.Statement;
 import java.util.Properties;
 
 import static org.apache.phoenix.query.QueryConstants.DEFAULT_COLUMN_FAMILY;
@@ -350,4 +350,24 @@ public class ShowCreateTableIT extends 
ParallelStatsDisabledIT {
         assertTrue("Expected: " + createIndex + "\nResult: " + rs.getString(1),
                 rs.getString(1).contains(createIndex));
     }
+
+    @Test
+    public void testShowCreateTableUsingGetResultSet() throws Exception {
+        Properties props = new Properties();
+        Connection conn = DriverManager.getConnection(getUrl(), props);
+        String tableName = generateUniqueName();
+        String schemaName = generateUniqueName();
+        String tableFullName = SchemaUtil.getQualifiedTableName(schemaName, 
tableName);
+        String ddl = "CREATE TABLE " + tableFullName + "(K VARCHAR NOT NULL 
PRIMARY KEY, INT INTEGER)";
+        conn.createStatement().execute(ddl);
+        try (Statement statement = conn.createStatement()) {
+            boolean execute = statement.execute("SHOW CREATE TABLE " + 
tableFullName);
+            if (execute) {
+                try (ResultSet rs = statement.getResultSet()) {
+                    assertTrue(rs.next());
+                    assertTrue(rs.getString(1).contains(tableFullName));
+                }
+            }
+        }
+    }
 }

Reply via email to