in linkis-computation-governance/linkis-jdbc-driver/src/main/scala/org/apache/linkis/ujes/jdbc/UJESSQLDatabaseMetaData.scala [35:427]
override def allProceduresAreCallable(): Boolean = false
override def allTablesAreSelectable(): Boolean = false
override def getURL: String = ujesSQLConnection.getProps.getProperty("URL")
override def getUserName: String =
if (ujesSQLConnection.getProps.containsKey("user"))
ujesSQLConnection.getProps.getProperty("user")
else
throw new LinkisSQLException(LinkisSQLErrorCode.PARAMS_NOT_FOUND, "Missing user information")
override def isReadOnly: Boolean = false
override def nullsAreSortedHigh(): Boolean = false
override def nullsAreSortedLow(): Boolean = false
override def nullsAreSortedAtStart(): Boolean = false
override def nullsAreSortedAtEnd(): Boolean = false
override def getDatabaseProductName: String = "linkis"
override def getDatabaseProductVersion: String = ""
override def getDriverName: String = "Linkis JDBC Driver"
override def getDriverVersion: String = UJESSQLDriverMain.DEFAULT_VERSION.toString
override def getDriverMajorVersion: Int = UJESSQLDriverMain.DEFAULT_VERSION
override def getDriverMinorVersion: Int = UJESSQLDriverMain.DEFAULT_VERSION
override def usesLocalFiles(): Boolean = false
override def usesLocalFilePerTable(): Boolean = false
override def supportsMixedCaseIdentifiers(): Boolean = false
override def storesUpperCaseIdentifiers(): Boolean = false
override def storesLowerCaseIdentifiers(): Boolean = false
override def storesMixedCaseIdentifiers(): Boolean = false
override def supportsMixedCaseQuotedIdentifiers(): Boolean = false
override def storesUpperCaseQuotedIdentifiers(): Boolean = false
override def storesLowerCaseQuotedIdentifiers(): Boolean = false
override def storesMixedCaseQuotedIdentifiers(): Boolean = false
override def getIdentifierQuoteString: String = " "
override def getSQLKeywords: String =
throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getSQLKeywords not supported"
)
override def getNumericFunctions: String = ""
override def getStringFunctions: String = ""
override def getSystemFunctions: String = ""
override def getTimeDateFunctions: String = ""
override def getSearchStringEscape: String = "\\"
override def getExtraNameCharacters: String = ""
override def supportsAlterTableWithAddColumn(): Boolean = true
override def supportsAlterTableWithDropColumn(): Boolean = false
override def supportsColumnAliasing(): Boolean = true
override def nullPlusNonNullIsNull(): Boolean = false
override def supportsConvert(): Boolean = false
override def supportsConvert(fromType: Int, toType: Int): Boolean = false
override def supportsTableCorrelationNames(): Boolean = false
override def supportsDifferentTableCorrelationNames(): Boolean = false
override def supportsExpressionsInOrderBy(): Boolean = false
override def supportsOrderByUnrelated(): Boolean = false
override def supportsGroupBy(): Boolean = true
override def supportsGroupByUnrelated(): Boolean = false
override def supportsGroupByBeyondSelect(): Boolean = false
override def supportsLikeEscapeClause(): Boolean = false
override def supportsMultipleResultSets(): Boolean = false
override def supportsMultipleTransactions(): Boolean = false
override def supportsNonNullableColumns(): Boolean = false
override def supportsMinimumSQLGrammar(): Boolean = false
override def supportsCoreSQLGrammar(): Boolean = false
override def supportsExtendedSQLGrammar(): Boolean = false
override def supportsANSI92EntryLevelSQL(): Boolean = false
override def supportsANSI92IntermediateSQL(): Boolean = false
override def supportsANSI92FullSQL(): Boolean = false
override def supportsIntegrityEnhancementFacility(): Boolean = false
override def supportsOuterJoins(): Boolean = true
override def supportsFullOuterJoins(): Boolean = true
override def supportsLimitedOuterJoins(): Boolean = true
override def getSchemaTerm: String = "database"
override def getProcedureTerm: String = new String("UDF")
override def getCatalogTerm: String = "instance"
override def isCatalogAtStart: Boolean = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"isCatalogAtStart not supported"
)
override def getCatalogSeparator: String = "."
override def supportsSchemasInDataManipulation(): Boolean = true
override def supportsSchemasInProcedureCalls(): Boolean = false
override def supportsSchemasInTableDefinitions(): Boolean = true
override def supportsSchemasInIndexDefinitions(): Boolean = false
override def supportsSchemasInPrivilegeDefinitions(): Boolean = false
override def supportsCatalogsInDataManipulation(): Boolean = false
override def supportsCatalogsInProcedureCalls(): Boolean = false
override def supportsCatalogsInTableDefinitions(): Boolean = false
override def supportsCatalogsInIndexDefinitions(): Boolean = false
override def supportsCatalogsInPrivilegeDefinitions(): Boolean = false
override def supportsPositionedDelete(): Boolean = false
override def supportsPositionedUpdate(): Boolean = false
override def supportsSelectForUpdate(): Boolean = false
override def supportsStoredProcedures(): Boolean = false
override def supportsSubqueriesInComparisons(): Boolean = false
override def supportsSubqueriesInExists(): Boolean = false
override def supportsSubqueriesInIns(): Boolean = false
override def supportsSubqueriesInQuantifieds(): Boolean = false
override def supportsCorrelatedSubqueries(): Boolean = false
override def supportsUnion(): Boolean = false
override def supportsUnionAll(): Boolean = true
override def supportsOpenCursorsAcrossCommit(): Boolean = false
override def supportsOpenCursorsAcrossRollback(): Boolean = false
override def supportsOpenStatementsAcrossCommit(): Boolean = false
override def supportsOpenStatementsAcrossRollback(): Boolean = false
override def getMaxBinaryLiteralLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxBinaryLiteralLength not supported"
)
override def getMaxCharLiteralLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxCharLiteralLength not supported"
)
override def getMaxColumnNameLength: Int = 128
override def getMaxColumnsInGroupBy: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxColumnsInGroupBy not supported"
)
override def getMaxColumnsInIndex: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxColumnsInIndex not supported"
)
override def getMaxColumnsInOrderBy: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxColumnsInOrderBy not supported"
)
override def getMaxColumnsInSelect: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxColumnsInSelect not supported"
)
override def getMaxColumnsInTable: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxColumnsInTable not supported"
)
override def getMaxConnections: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxConnections not supported"
)
override def getMaxCursorNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxCursorNameLength not supported"
)
override def getMaxIndexLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxIndexLength not supported"
)
override def getMaxSchemaNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxSchemaNameLength not supported"
)
override def getMaxProcedureNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxProcedureNameLength not supported"
)
override def getMaxCatalogNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxCatalogNameLength not supported"
)
override def getMaxRowSize: Int =
throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxRowSize not supported"
)
override def doesMaxRowSizeIncludeBlobs(): Boolean = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"doesMaxRowSizeIncludeBlobs not supported"
)
override def getMaxStatementLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxStatementLength not supported"
)
override def getMaxStatements: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxStatements not supported"
)
override def getMaxTableNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxTableNameLength not supported"
)
override def getMaxTablesInSelect: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxTablesInSelect not supported"
)
override def getMaxUserNameLength: Int = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"getMaxUserNameLength not supported"
)
override def getDefaultTransactionIsolation: Int = 0
override def supportsTransactions(): Boolean = false
override def supportsTransactionIsolationLevel(level: Int): Boolean = false
override def supportsDataDefinitionAndDataManipulationTransactions(): Boolean = false
override def supportsDataManipulationTransactionsOnly(): Boolean = false
override def dataDefinitionCausesTransactionCommit(): Boolean = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"dataDefinitionCausesTransactionCommit not supported"
)
override def dataDefinitionIgnoredInTransactions(): Boolean = throw new LinkisSQLException(
LinkisSQLErrorCode.NOSUPPORT_METADATA,
"dataDefinitionIgnoredInTransactions not supported"
)
override def getProcedures(
catalog: String,
schemaPattern: String,
procedureNamePattern: String
): ResultSet = null
override def getProcedureColumns(
catalog: String,
schemaPattern: String,
procedureNamePattern: String,
columnNamePattern: String
): ResultSet = null
override def getTables(
catalog: String,
schemaPattern: String,
tableNamePattern: String,
types: Array[String]
): ResultSet = {
val resultCatalog = if (StringUtils.isNotBlank(schemaPattern)) {
schemaPattern
} else if (StringUtils.isNotBlank(catalog)) {
catalog
} else {
s"${getUserName}_ind"
}
logger.info(s"resultCatalog is ${resultCatalog}")
val getTableAction =
GetTablesAction.builder().setUser(getUserName).setDatabase(resultCatalog).build()
val result = ujesSQLConnection.ujesClient.getTables(getTableAction)
val tables = result.getTables
val resultTables = new util.ArrayList[util.Map[String, String]]()
tables.foreach { table =>
val tableType =
if (table.get("isView").asInstanceOf[Boolean]) TableType.VIEW.name()
else TableType.TABLE.name()
val resultTable = new util.HashMap[String, String]()
val tableName = table.get("tableName").asInstanceOf[String]
resultTable.put("catalog", resultCatalog)
resultTable.put("tableName", tableName)
resultTable.put("tableType", tableType)
if (null == types || types.contains(tableType)) {
if (
StringUtils.isNotBlank(tableNamePattern) && tableNamePattern.equalsIgnoreCase(tableName)
) {
resultTables.add(resultTable)
} else if (StringUtils.isBlank(tableNamePattern)) {
resultTables.add(resultTable)
}
}
}
val resultSet: LinkisMetaDataResultSet[util.Map[String, String]] =
new LinkisMetaDataResultSet[util.Map[String, String]](
util.Arrays.asList("TABLE_CAT", "TABLE_SCHEM", "TABLE_NAME", "TABLE_TYPE", "REMARKS"),
util.Arrays.asList("string", "string", "string", "string", "string"),
resultTables
) {
private var cnt = 0
override def next(): Boolean = {
if (cnt < data.size()) {
val resultTable = new util.ArrayList[Object](5)
val table = data.get(cnt)
resultTable.add(table.get("catalog"))
resultTable.add(null)
resultTable.add(table.get("tableName"))
resultTable.add(table.get("tableType"))
resultTable.add(table.get(""))
row = resultTable
cnt = cnt + 1
true
} else {
false
}
}
}
logger.info(s"resultSet is ${resultSet}")
resultSet
}