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 <[email protected]>
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));
+ }
+ }
+ }
+ }
}