Skip to content

Commit 023bb2f

Browse files
authored
SQL: Remove slightly used meta commands (elastic#37506)
Remove SYS CATALOGS and SYS TABLE TYPES as they are a subset of SYS TABLES (and thus somewhat redundant) and used only by JDBC. Close elastic#37409
1 parent 5a5e44d commit 023bb2f

File tree

17 files changed

+788
-1141
lines changed

17 files changed

+788
-1141
lines changed

x-pack/plugin/sql/jdbc/src/main/java/org/elasticsearch/xpack/sql/jdbc/JdbcDatabaseMetaData.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -773,12 +773,16 @@ public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLExce
773773

774774
@Override
775775
public ResultSet getCatalogs() throws SQLException {
776-
return con.createStatement().executeQuery("SYS CATALOGS");
776+
// TABLE_CAT is the first column
777+
Object[][] data = queryColumn(con, "SYS TABLES CATALOG LIKE '%'", 1);
778+
return memorySet(con.cfg, columnInfo("", "TABLE_CAT"), data);
777779
}
778780

779781
@Override
780782
public ResultSet getTableTypes() throws SQLException {
781-
return con.createStatement().executeQuery("SYS TABLE TYPES");
783+
// TABLE_TYPE (4)
784+
Object[][] data = queryColumn(con, "SYS TABLES TYPE '%'", 4);
785+
return memorySet(con.cfg, columnInfo("", "TABLE_TYPE"), data);
782786
}
783787

784788
@Override
@@ -1114,6 +1118,26 @@ public boolean generatedKeyAlwaysReturned() throws SQLException {
11141118
return false;
11151119
}
11161120

1121+
//
1122+
// Utility methods
1123+
//
1124+
1125+
private static Object[][] queryColumn(JdbcConnection con, String query, int... cols) throws SQLException {
1126+
List<Object[]> data = new ArrayList<>();
1127+
try (ResultSet rs = con.createStatement().executeQuery(query)) {
1128+
while (rs.next()) {
1129+
Object[] row = new Object[cols.length];
1130+
for (int i = 0; i < cols.length; i++) {
1131+
row[i] = rs.getObject(cols[i]);
1132+
}
1133+
data.add(row);
1134+
}
1135+
}
1136+
1137+
return data.toArray(new Object[][] {});
1138+
}
1139+
1140+
11171141
private static List<JdbcColumnInfo> columnInfo(String tableName, Object... cols) throws JdbcSQLException {
11181142
List<JdbcColumnInfo> columns = new ArrayList<>();
11191143

@@ -1156,7 +1180,7 @@ private static ResultSet memorySet(JdbcConfiguration cfg, List<JdbcColumnInfo> c
11561180
return new JdbcResultSet(cfg, null, new InMemoryCursor(columns, data));
11571181
}
11581182

1159-
static class InMemoryCursor implements Cursor {
1183+
private static class InMemoryCursor implements Cursor {
11601184

11611185
private final List<JdbcColumnInfo> columns;
11621186
private final Object[][] data;
@@ -1197,4 +1221,4 @@ public void close() throws SQLException {
11971221
// this cursor doesn't hold any resource - no need to clean up
11981222
}
11991223
}
1200-
}
1224+
}

x-pack/plugin/sql/qa/src/main/java/org/elasticsearch/xpack/sql/qa/jdbc/DatabaseMetaDataTestCase.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ public void testGetTables() throws Exception {
7171
}
7272
}
7373

74-
public void testGetTableTypes() throws Exception {
74+
public void testGetTypeOfTables() throws Exception {
7575
index("test1", body -> body.field("name", "bob"));
7676
index("test2", body -> body.field("name", "bob"));
7777

7878
try (Connection h2 = LocalH2.anonymousDb(); Connection es = esJdbc()) {
79-
h2.createStatement().executeUpdate("RUNSCRIPT FROM 'classpath:/setup_mock_metadata_get_table_types.sql'");
79+
h2.createStatement().executeUpdate("RUNSCRIPT FROM 'classpath:/setup_mock_metadata_get_types_of_table.sql'");
8080

8181
CheckedSupplier<ResultSet, SQLException> all = () -> h2.createStatement()
8282
.executeQuery("SELECT '" + clusterName() + "' AS TABLE_CAT, * FROM mock");
@@ -88,6 +88,23 @@ public void testGetTableTypes() throws Exception {
8888
}
8989
}
9090

91+
public void testGetTableTypes() throws Exception {
92+
index("test1", body -> body.field("name", "bob"));
93+
index("test2", body -> body.field("name", "bob"));
94+
95+
try (Connection h2 = LocalH2.anonymousDb(); Connection es = esJdbc()) {
96+
h2.createStatement().executeUpdate("RUNSCRIPT FROM 'classpath:/setup_mock_metadata_get_table_types.sql'");
97+
assertResultSets(h2.createStatement().executeQuery("SELECT * FROM mock"), es.getMetaData().getTableTypes());
98+
}
99+
}
100+
101+
public void testGetCatalogs() throws Exception {
102+
try (Connection h2 = LocalH2.anonymousDb(); Connection es = esJdbc()) {
103+
assertResultSets(h2.createStatement().executeQuery("SELECT '" + clusterName() + "' AS TABLE_CAT"),
104+
es.getMetaData().getCatalogs());
105+
}
106+
}
107+
91108
public void testColumns() throws Exception {
92109
index("test1", body -> body.field("name", "bob"));
93110
index("test2", body -> {

x-pack/plugin/sql/qa/src/main/java/org/elasticsearch/xpack/sql/qa/rest/RestSqlUsageTestCase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ public void testSqlRestUsage() throws IOException {
160160
allTotalQueries += randomCommandExecutions;
161161
for (int i = 0; i < randomCommandExecutions; i++) {
162162
runSql(randomFrom("SHOW FUNCTIONS", "SHOW COLUMNS FROM library", "SHOW SCHEMAS",
163-
"SHOW TABLES", "SYS CATALOGS", "SYS COLUMNS LIKE '%name'",
164-
"SYS TABLES", "SYS TYPES"));
163+
"SHOW TABLES", "SYS TABLES", "SYS COLUMNS LIKE '%name'",
164+
"SYS TABLES TYPE '%'", "SYS TYPES"));
165165
}
166166
responseAsMap = getStats();
167167
assertFeatureMetric(baseMetrics.get("command") + randomCommandExecutions, responseAsMap, "command");
Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,7 @@
11
CREATE TABLE mock (
2-
TABLE_SCHEM VARCHAR,
3-
TABLE_NAME VARCHAR,
42
TABLE_TYPE VARCHAR,
5-
REMARKS VARCHAR,
6-
TYPE_CAT VARCHAR,
7-
TYPE_SCHEM VARCHAR,
8-
TYPE_NAME VARCHAR,
9-
SELF_REFERENCING_COL_NAME VARCHAR,
10-
REF_GENERATION VARCHAR
113
) AS
12-
SELECT '', 'test1', 'BASE TABLE', '', null, null, null, null, null FROM DUAL
4+
SELECT 'ALIAS' FROM DUAL
135
UNION ALL
14-
SELECT '', 'test2', 'BASE TABLE', '', null, null, null, null, null FROM DUAL
6+
SELECT 'BASE TABLE' FROM DUAL
157
;
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
CREATE TABLE mock (
2+
TABLE_SCHEM VARCHAR,
3+
TABLE_NAME VARCHAR,
4+
TABLE_TYPE VARCHAR,
5+
REMARKS VARCHAR,
6+
TYPE_CAT VARCHAR,
7+
TYPE_SCHEM VARCHAR,
8+
TYPE_NAME VARCHAR,
9+
SELF_REFERENCING_COL_NAME VARCHAR,
10+
REF_GENERATION VARCHAR
11+
) AS
12+
SELECT '', 'test1', 'BASE TABLE', '', null, null, null, null, null FROM DUAL
13+
UNION ALL
14+
SELECT '', 'test2', 'BASE TABLE', '', null, null, null, null, null FROM DUAL
15+
;

x-pack/plugin/sql/src/main/antlr/SqlBase.g4

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,13 @@ statement
5555
| (DESCRIBE | DESC) (tableLike=likePattern | tableIdent=tableIdentifier) #showColumns
5656
| SHOW FUNCTIONS (likePattern)? #showFunctions
5757
| SHOW SCHEMAS #showSchemas
58-
| SYS CATALOGS #sysCatalogs
5958
| SYS TABLES (CATALOG clusterLike=likePattern)?
6059
(tableLike=likePattern | tableIdent=tableIdentifier)?
6160
(TYPE string (',' string)* )? #sysTables
6261
| SYS COLUMNS (CATALOG cluster=string)?
6362
(TABLE tableLike=likePattern | tableIdent=tableIdentifier)?
6463
(columnPattern=likePattern)? #sysColumns
6564
| SYS TYPES ((PLUS | MINUS)? type=number)? #sysTypes
66-
| SYS TABLE TYPES #sysTableTypes
6765
;
6866

6967
query

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/CommandBuilder.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowSchemasContext;
1717
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.ShowTablesContext;
1818
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.StringContext;
19-
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysCatalogsContext;
2019
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysColumnsContext;
21-
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTableTypesContext;
2220
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTablesContext;
2321
import org.elasticsearch.xpack.sql.parser.SqlBaseParser.SysTypesContext;
2422
import org.elasticsearch.xpack.sql.plan.TableIdentifier;
@@ -29,9 +27,7 @@
2927
import org.elasticsearch.xpack.sql.plan.logical.command.ShowFunctions;
3028
import org.elasticsearch.xpack.sql.plan.logical.command.ShowSchemas;
3129
import org.elasticsearch.xpack.sql.plan.logical.command.ShowTables;
32-
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysCatalogs;
3330
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysColumns;
34-
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTableTypes;
3531
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTables;
3632
import org.elasticsearch.xpack.sql.plan.logical.command.sys.SysTypes;
3733
import org.elasticsearch.xpack.sql.proto.SqlTypedParamValue;
@@ -144,11 +140,6 @@ public Object visitShowColumns(ShowColumnsContext ctx) {
144140
return new ShowColumns(source(ctx), index, visitLikePattern(ctx.likePattern()));
145141
}
146142

147-
@Override
148-
public Object visitSysCatalogs(SysCatalogsContext ctx) {
149-
return new SysCatalogs(source(ctx));
150-
}
151-
152143
@Override
153144
public SysTables visitSysTables(SysTablesContext ctx) {
154145
List<IndexType> types = new ArrayList<>();
@@ -199,9 +190,4 @@ public SysTypes visitSysTypes(SysTypesContext ctx) {
199190

200191
return new SysTypes(source(ctx), Integer.valueOf(type));
201192
}
202-
203-
@Override
204-
public Object visitSysTableTypes(SysTableTypesContext ctx) {
205-
return new SysTableTypes(source(ctx));
206-
}
207193
}

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseListener.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,18 +119,6 @@ class SqlBaseBaseListener implements SqlBaseListener {
119119
* <p>The default implementation does nothing.</p>
120120
*/
121121
@Override public void exitShowSchemas(SqlBaseParser.ShowSchemasContext ctx) { }
122-
/**
123-
* {@inheritDoc}
124-
*
125-
* <p>The default implementation does nothing.</p>
126-
*/
127-
@Override public void enterSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { }
128-
/**
129-
* {@inheritDoc}
130-
*
131-
* <p>The default implementation does nothing.</p>
132-
*/
133-
@Override public void exitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { }
134122
/**
135123
* {@inheritDoc}
136124
*
@@ -167,18 +155,6 @@ class SqlBaseBaseListener implements SqlBaseListener {
167155
* <p>The default implementation does nothing.</p>
168156
*/
169157
@Override public void exitSysTypes(SqlBaseParser.SysTypesContext ctx) { }
170-
/**
171-
* {@inheritDoc}
172-
*
173-
* <p>The default implementation does nothing.</p>
174-
*/
175-
@Override public void enterSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { }
176-
/**
177-
* {@inheritDoc}
178-
*
179-
* <p>The default implementation does nothing.</p>
180-
*/
181-
@Override public void exitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { }
182158
/**
183159
* {@inheritDoc}
184160
*

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseBaseVisitor.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,6 @@ class SqlBaseBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements SqlBa
7474
* {@link #visitChildren} on {@code ctx}.</p>
7575
*/
7676
@Override public T visitShowSchemas(SqlBaseParser.ShowSchemasContext ctx) { return visitChildren(ctx); }
77-
/**
78-
* {@inheritDoc}
79-
*
80-
* <p>The default implementation returns the result of calling
81-
* {@link #visitChildren} on {@code ctx}.</p>
82-
*/
83-
@Override public T visitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx) { return visitChildren(ctx); }
8477
/**
8578
* {@inheritDoc}
8679
*
@@ -102,13 +95,6 @@ class SqlBaseBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements SqlBa
10295
* {@link #visitChildren} on {@code ctx}.</p>
10396
*/
10497
@Override public T visitSysTypes(SqlBaseParser.SysTypesContext ctx) { return visitChildren(ctx); }
105-
/**
106-
* {@inheritDoc}
107-
*
108-
* <p>The default implementation returns the result of calling
109-
* {@link #visitChildren} on {@code ctx}.</p>
110-
*/
111-
@Override public T visitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx) { return visitChildren(ctx); }
11298
/**
11399
* {@inheritDoc}
114100
*

x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/SqlBaseListener.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -111,18 +111,6 @@ interface SqlBaseListener extends ParseTreeListener {
111111
* @param ctx the parse tree
112112
*/
113113
void exitShowSchemas(SqlBaseParser.ShowSchemasContext ctx);
114-
/**
115-
* Enter a parse tree produced by the {@code sysCatalogs}
116-
* labeled alternative in {@link SqlBaseParser#statement}.
117-
* @param ctx the parse tree
118-
*/
119-
void enterSysCatalogs(SqlBaseParser.SysCatalogsContext ctx);
120-
/**
121-
* Exit a parse tree produced by the {@code sysCatalogs}
122-
* labeled alternative in {@link SqlBaseParser#statement}.
123-
* @param ctx the parse tree
124-
*/
125-
void exitSysCatalogs(SqlBaseParser.SysCatalogsContext ctx);
126114
/**
127115
* Enter a parse tree produced by the {@code sysTables}
128116
* labeled alternative in {@link SqlBaseParser#statement}.
@@ -159,18 +147,6 @@ interface SqlBaseListener extends ParseTreeListener {
159147
* @param ctx the parse tree
160148
*/
161149
void exitSysTypes(SqlBaseParser.SysTypesContext ctx);
162-
/**
163-
* Enter a parse tree produced by the {@code sysTableTypes}
164-
* labeled alternative in {@link SqlBaseParser#statement}.
165-
* @param ctx the parse tree
166-
*/
167-
void enterSysTableTypes(SqlBaseParser.SysTableTypesContext ctx);
168-
/**
169-
* Exit a parse tree produced by the {@code sysTableTypes}
170-
* labeled alternative in {@link SqlBaseParser#statement}.
171-
* @param ctx the parse tree
172-
*/
173-
void exitSysTableTypes(SqlBaseParser.SysTableTypesContext ctx);
174150
/**
175151
* Enter a parse tree produced by {@link SqlBaseParser#query}.
176152
* @param ctx the parse tree

0 commit comments

Comments
 (0)