Skip to content

Commit b1706df

Browse files
PHOENIX-7527 NPE thrown when extract table schema using sqlline. (#2079)
1 parent 89da2d6 commit b1706df

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

phoenix-core-client/src/main/java/org/apache/phoenix/jdbc/PhoenixStatement.java

+4
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,10 @@ private PhoenixResultSet executeQuery(final CompilableStatement stmt,
430430
newResultSet(resultIterator, plan.getProjector(),
431431
plan.getContext());
432432
// newResultset sets lastResultset
433+
// ExecutableShowCreateTable/ExecutableShowTablesStatement/ExecutableShowSchemasStatement using a delegateStmt
434+
// to compile a queryPlan, the resultSet will set to the delegateStmt, so need set resultSet
435+
// to the origin statement.
436+
setLastResultSet(rs);
433437
setLastQueryPlan(plan);
434438
setLastUpdateCount(NO_UPDATE);
435439
setLastUpdateTable(tableName == null ? TABLE_UNKNOWN : tableName);

phoenix-core/src/it/java/org/apache/phoenix/end2end/ShowCreateTableIT.java

+21-1
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,13 @@
1818
package org.apache.phoenix.end2end;
1919

2020
import org.apache.phoenix.util.SchemaUtil;
21-
import org.junit.Ignore;
2221
import org.junit.Test;
2322
import org.junit.experimental.categories.Category;
2423

2524
import java.sql.Connection;
2625
import java.sql.DriverManager;
2726
import java.sql.ResultSet;
27+
import java.sql.Statement;
2828
import java.util.Properties;
2929

3030
import static org.apache.phoenix.query.QueryConstants.DEFAULT_COLUMN_FAMILY;
@@ -350,4 +350,24 @@ public void testShowCreateTableIndex() throws Exception {
350350
assertTrue("Expected: " + createIndex + "\nResult: " + rs.getString(1),
351351
rs.getString(1).contains(createIndex));
352352
}
353+
354+
@Test
355+
public void testShowCreateTableUsingGetResultSet() throws Exception {
356+
Properties props = new Properties();
357+
Connection conn = DriverManager.getConnection(getUrl(), props);
358+
String tableName = generateUniqueName();
359+
String schemaName = generateUniqueName();
360+
String tableFullName = SchemaUtil.getQualifiedTableName(schemaName, tableName);
361+
String ddl = "CREATE TABLE " + tableFullName + "(K VARCHAR NOT NULL PRIMARY KEY, INT INTEGER)";
362+
conn.createStatement().execute(ddl);
363+
try (Statement statement = conn.createStatement()) {
364+
boolean execute = statement.execute("SHOW CREATE TABLE " + tableFullName);
365+
if (execute) {
366+
try (ResultSet rs = statement.getResultSet()) {
367+
assertTrue(rs.next());
368+
assertTrue(rs.getString(1).contains(tableFullName));
369+
}
370+
}
371+
}
372+
}
353373
}

0 commit comments

Comments
 (0)