yuzelin commented on code in PR #20401:
URL: https://github.com/apache/flink/pull/20401#discussion_r938500275
##########
flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/table/endpoint/hive/HiveServer2Endpoint.java:
##########
@@ -422,7 +426,76 @@ public TGetCatalogsResp GetCatalogs(TGetCatalogsReq
tGetCatalogsReq) throws TExc
@Override
public TGetSchemasResp GetSchemas(TGetSchemasReq tGetSchemasReq) throws
TException {
- throw new UnsupportedOperationException(ERROR_MESSAGE);
+ TGetSchemasResp resp = new TGetSchemasResp();
+ try {
+ SessionHandle sessionHandle =
toSessionHandle(tGetSchemasReq.getSessionHandle());
+ OperationHandle operationHandle =
+ service.submitOperation(
+ sessionHandle,
+ OperationType.LIST_SCHEMAS,
+ () -> {
+ Set<String> schemaNames =
+ service
+ .listDatabases(
+ sessionHandle,
+
tGetSchemasReq.getCatalogName())
+ .stream()
+ .filter(
+ name ->
+ name.matches(
+
convertNamePattern(
+
tGetSchemasReq
+
.getSchemaName())))
+ .collect(Collectors.toSet());
+
+ return new ResultSet(
+ EOS,
+ null,
+ GET_SCHEMAS_SCHEMA,
+ schemaNames.stream()
+ .map(
+ name ->
+
GenericRowData.of(
+
StringData.fromString(name),
+
StringData.fromString(
+
tGetSchemasReq
+
.getCatalogName())))
+ .collect(Collectors.toList()));
+ });
+
+ // TODO: Remove this
+ while (!service.getOperationInfo(sessionHandle, operationHandle)
+ .getStatus()
+ .isTerminalStatus()) {
+ Thread.sleep(1000);
+ }
+ resp.setStatus(OK_STATUS);
+ resp.setOperationHandle(
+ toTOperationHandle(sessionHandle, operationHandle,
OperationType.LIST_SCHEMAS));
+ } catch (Throwable t) {
+ LOG.error("Failed to GetSchemas.", t);
+ resp.setStatus(toTStatus(t));
+ }
+ return resp;
+ }
+
+ /**
+ * Convert wildchars and escape sequence of schema pattern from JDBC
format to
+ * datanucleous/regex. The schema pattern treats empty string also as
wildchar. implementation
+ * refers to hive's convertSchemaPattern.
+ */
Review Comment:
Changed.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]