odbcgen_fragments.properties
来自「derby database source code.good for you.」· PROPERTIES 代码 · 共 257 行
PROPERTIES
257 行
## This file contains SQL fragments that are used as# part of the ODBC metadata generation process.# This file is NOT, and is NOT intended to become,# an ODBC substitute for metadata.properties.# Rather, it is a place to store fragments of ODBC# metadata statements that do not apply to JDBC# metadata, but which are used as part of the ODBC# metadata generation process (these fragments are# plugged into the ODBC versions of the queries for# which they are required). When all is done,# the fragments in this file will show up as part# of the generated ODBC metadata queries, which# will then be appended to Derby's internal list# of metadata queries (in metadata.properties),# which will, finally, serve as the basis for# for both JDBC and ODBC metadata calls.## This file, like the ODBCMetadataGenerator class# that uses it, is ONLY USED AT BUILD TIME; and # like the ODBCMetadataGenerator class, it is NOT# included in the final org.apache.derby package# (and thus will NOT be included in the Derby jar# file).## Note: In this file, words between curly brackets# (ex "{SQL_DATA_TYPE_FOR_ODBC}") are placeholders# for other fragments in this file. The actual# substitutions for these placeholders occur as# part of the ODBCMetadataGenerator class's work.## Finally, note that starting a line in this file# with the "\\\n" sequence allows formatting (esp.# tabs and newlines) to be preserved, so that the# generated ODBC queries are human-readable.# ----------## SQL_DATA_TYPE:# Set SQL_DATA_TYPE, which is unused by JDBC (and# thus returns NULL for JDBC), to the value as# defined by the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# as part of the JDBC subquery's result set.## Date, time, and timestamp columns are supposed# to return a generic "SQL_DATETIME" value here;# that's defined as the value "9". All other# types return their normal DATA_TYPE value.#SQL_DATA_TYPE_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::DATE, \\\\n java.sql.Types::TIME, java.sql.Types::TIMESTAMP)) \\\\n THEN 9 \\\\n ELSE JDBC_SUBQUERY.DATA_TYPE END# ----------## SQL_DATETIME_SUB:# Set SQL_DATETIME_SUB, which is unused by JDBC (and# thus returns NULL for JDBC), to the value as# defined by the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# as part of the JDBC subquery's result set.## This value is null for all types except date, time,# and timestamp. For those, the values are defined# as follows:## SQL_CODE_DATE 1# SQL_CODE_TIME 2# SQL_CODE_TIMESTAMP 3#DATETIME_SUB_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE = java.sql.Types::DATE) \\\\n THEN 1 \\\\n ELSE (CASE WHEN (JDBC_SUBQUERY.DATA_TYPE = java.sql.Types::TIME) \\\\n THEN 2 \\\\n ELSE (CASE WHEN (JDBC_SUBQUERY.DATA_TYPE = java.sql.Types::TIMESTAMP) \\\\n THEN 3 \\\\n ELSE CAST (NULL AS SMALLINT) END ) END ) END# ----------## UNSIGNED_ATTRIBUTE:# Set UNSIGNED_ATTRIBUTE, which defaults to "true"# for non-numeric types in JDBC, to be NULL for# non-numeric types according the definition as# given in the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# and a column named "UNSIGNED_ATTRIBUTE" as# part of the JDBC subquery's result set.#UNSIGNED_ATTR_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::DECIMAL, \\\\n java.sql.Types::NUMERIC, java.sql.Types::INTEGER, \\\\n java.sql.Types::SMALLINT, java.sql.Types::TINYINT, \\\\n java.sql.Types::BIGINT, java.sql.Types::DOUBLE, \\\\n java.sql.Types::FLOAT, java.sql.Types::REAL, \\\\n java.sql.Types::DATE, java.sql.Types::TIME, \\\\n java.sql.Types::TIMESTAMP)) \\\\n THEN JDBC_SUBQUERY.UNSIGNED_ATTRIBUTE \\\\n ELSE CAST (NULL AS SMALLINT) END# ----------## AUTO_UNIQUE_VAL:# Set AUTO_UNIQUE_VAL, which defaults to "false"# for non-numeric types in JDBC, to be NULL for# non-numeric types according the definition as# given in the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# and a column named "AUTO_UNIQUE_VAL" as# part of the JDBC subquery's result set.#AUTO_UNIQUE_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::DECIMAL, \\\\n java.sql.Types::NUMERIC, java.sql.Types::INTEGER, \\\\n java.sql.Types::SMALLINT, java.sql.Types::TINYINT, \\\\n java.sql.Types::BIGINT, java.sql.Types::DOUBLE, \\\\n java.sql.Types::FLOAT, java.sql.Types::REAL, \\\\n java.sql.Types::DATE, java.sql.Types::TIME, \\\\n java.sql.Types::TIMESTAMP)) \\\\n THEN JDBC_SUBQUERY.AUTO_UNIQUE_VAL \\\\n ELSE CAST (NULL AS SMALLINT) END# ----------## NUM_PREC_RADIX:# Set NUM_PREC_RADIX, which is "10" for datetime# values in JDBC, to be "2" for datetime values# in ODBC, as given in the ODBC specification.# Note that any metadata statement requiring this# fragment must already have a column named# "DATA_TYPE" and a column named "NUM_PREC_RADIX"# as part of the JDBC subquery's result set.#RADIX_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::DATE, \\\\n java.sql.Types::TIME, java.sql.Types::TIMESTAMP)) \\\\n THEN CAST (2 AS SMALLINT) \\\\n ELSE JDBC_SUBQUERY.NUM_PREC_RADIX END# ----------## DECIMAL_DIGITS:# Set DECIMAL_DIGITS to be NULL for DATE columns# in ODBC, as given in the ODBC specification.# Note that any metadata statement requiring this# fragment must already have a column named# "DATA_TYPE" and a column named "DECIMAL_DIGITS"# as part of the JDBC subquery's result set.#DECIMAL_DIGITS_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::DATE)) \\\\n THEN CAST (NULL AS SMALLINT) \\\\n ELSE JDBC_SUBQUERY.DECIMAL_DIGITS END# ----------## Columns that need to be added to the getProcedureColumns result# set for ODBC compliance.#GET_PROC_COLS_NEW_COLS=\CAST (NULL AS VARCHAR(254)) AS COLUMN_DEF, \\\\nCAST (({SQL_DATA_TYPE_FOR_ODBC}) AS SMALLINT) \\\\n AS SQL_DATA_TYPE, \\\\nCAST (({DATETIME_SUB_FOR_ODBC}) AS SMALLINT) \\\\n AS SQL_DATETIME_SUB, \\\\nCASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::CHAR, \\\\n java.sql.Types::VARCHAR, java.sql.Types::BINARY, \\\\n java.sql.Types::VARBINARY)) \\\\n THEN JDBC_SUBQUERY.BUFFER_LENGTH \\\\n ELSE CAST (NULL AS INT) END \\\\n AS CHAR_OCTET_LENGTH, \\\\nCAST ((JDBC_SUBQUERY.PARAMETER_ID + 1) AS INT) AS ORDINAL_POSITION, \\\\nCAST ((CASE WHEN (JDBC_SUBQUERY.NULLABLE IN \\\\n (java.sql.DatabaseMetaData::procedureNullable)) \\\\n THEN 'YES' \\\\n ELSE 'NO' END) \\\\n AS VARCHAR(128)) AS IS_NULLABLE# ----------## Columns that need to be added to the getTypeInfo result# set for ODBC compliance.#GET_TYPE_INFO_NEW_COLS=\CAST (NULL AS SMALLINT) AS INTERVAL_PRECISION# ----------## In order to correctly determine the BUFFER_LENGTH# and CHAR_OCTET_LENGTH values for the ODBC version# of getColumns, we need to retrieve the max width# value of the column in question. Since this# specific value isn't returned as part of the JDBC# metadata, we need to add it as a "helper" column# to the JDBC subquery result set. See the# addHelperColsToSubquery method in the ODBC meta-# data generator class for more details.#GET_COLS_HELPER_COLS=, \\\\n C.COLUMNDATATYPE.getMaximumWidthInBytes() AS COL_MAX_WIDTH_IN_BYTES# ----------## In order to correctly determine the BUFFER_LENGTH# value for the ODBC versions of the getBestRow*# queries, we need to retrieve the max width# value of the column in question. Since this# specific value isn't returned as part of the JDBC# metadata, we need to add it as a "helper" column# to the JDBC subquery result set. See the# addHelperColsToSubquery method in the ODBC meta-# data generator class for more details.#BEST_ROW_ID_HELPER_COLS=, \\\\n COLS.COLUMNDATATYPE.getMaximumWidthInBytes() AS COL_MAX_WIDTH_IN_BYTES# ----------## BUFFER_LENGTH:# Set BUFFER_LENGTH, which is unused by JDBC (and# thus returns NULL for JDBC), to the value as# defined by the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# and a "helper" column named "COL_MAX_WIDTH_IN_BYTES"# as part of the JDBC subquery's result set.#BUFFER_LEN_FOR_ODBC=\JDBC_SUBQUERY.COL_MAX_WIDTH_IN_BYTES# ----------## CHAR_OCTET_LENGTH:# Make CHAR_OCTET_LENGTH, which only applies to# char cols in JDBC, apply to both char and binary# columns per the ODBC specification. Note that# any metadata statement requiring this fragment# must already have a column named "DATA_TYPE"# and a "helper" column named "COL_MAX_WIDTH_IN_BYTES"# as part of the JDBC subquery's result set.#CHAR_OCTET_FOR_ODBC=\CASE WHEN (JDBC_SUBQUERY.DATA_TYPE IN (java.sql.Types::CHAR, \\\\n java.sql.Types::VARCHAR, java.sql.Types::BINARY, \\\\n java.sql.Types::VARBINARY)) \\\\n THEN JDBC_SUBQUERY.COL_MAX_WIDTH_IN_BYTES \\\\n ELSE CAST(NULL AS INT) END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?