This is an automated email from the ASF dual-hosted git repository. stoty pushed a commit to branch 5.2 in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/5.2 by this push: new c9c12eb37d PHOENIX-7527 NPE thrown when extract table schema using sqlline. (#2079) c9c12eb37d is described below commit c9c12eb37dbf26ebccf4eae2da01686393a2ebe5 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 6d9ab7fe13..2ea156e180 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 @@ -403,6 +403,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)); + } + } + } + } }