Apache OpenOffice (AOO) Bugzilla – Issue 3289
ODBC table and field names incorrectly double quoted
Last modified: 2006-05-31 14:29:06 UTC
Using the new beta iSeries ODBC driver for Linux and unixODBC 2.2 and OpenOffice 641b for PPC, I have run into a problem with how OpenOffice double quotes an SQL query. For example, this was generated by OpenOffice: SELECT * FROM "SERVER"."LIBRARY.TABLE" which will fail because ODBC will consider "library.table" as the real table name. Instead it should be generating: SELECT * FROM "SERVER"."LIBRARY"."TABLE" Notice the extra double quotes for seperating the table name from the library. It would also be handy to have an option to allow all uppercase names and leave out the double quotes.
Hi Marc, could you please try to reproduce the bug? thanks Dirk
Hi, I seems to be driver bug. I have no AS400 database here, so I can't test it here. I'm still searching for a database which use schemas and catalogs. stay tuned. Bye Marc
Marc, thanks for looking into this... I know the driver code (not unixODBC Driver Manager, but the actual ODBC driver itself) and I don't believe this is a driver bug. I believe openOffice is using the SQLGetInfo to get the SQL_IDENTIFIER_QUOTE_CHAR which the driver will pass back a double quote. Then the openOffice code is mis-using the double quote by putting more than one file qualifier between them. If you still can find this logic in your code, I can look into setting up a temp external AS400 database for you to use.
Hi Mark, > Marc, thanks for looking into this... That's my job ;-) > I know the driver code (not unixODBC Driver Manager, but the actual > ODBC driver itself) and I don't believe this is a driver bug. After some closer looking into it I have 2 questions. What return the driver for SqlGetInfo( SQL_SCHEMA_USAGE ) and SqlGetInfo( SQL_CATALOG_USAGE )? If the method return the bit SQL_SU_DML_STATEMENTS / SQL_CU_DML_STATEMENTS then it should work. I think your driver return the bit SQL_CU_DML_STATEMENTS for SqlGetInfo( SQL_CATALOG_USAGE ) and nothing for the SqlGetInfo( SQL_SCHEMA_USAGE ). > I can look into > setting up a temp external AS400 database for you to use. That's a great idea. Bye Marc
Marc, here's a SQLGetInfo (ALL) dump from odbctest. It shows the opposite of what you stated for SQL_CATALOG_USAGE and SQL_SCHEMA_USAGE. Also, checkout the SQL_CATALOG items, I noticed that OpenOffice included the catalog name in the select, but the SQL_CATALOG_USAGE states that its technically not allowed. Another bug? Get Info All: fInfoType, pcbInfoValue, rgbInfoValue SQL_ACCESSIBLE_PROCEDURES=20, 1, "N" SQL_ACCESSIBLE_TABLES=19, 1, "N" SQL_ACTIVE_CONNECTIONS=0, 2, 0 SQL_ACTIVE_ENVIRONMENTS=116, 2, 0 SQL_ACTIVE_STATEMENTS=1, 2, 0 SQL_ALTER_DOMAIN=117, 4, 0x00000000 SQL_ALTER_TABLE=86, 2, 0x00000003 = SQL_AT_ADD_COLUMN | SQL_AT_DROP_COLUMN SQL_SQL_CONFORMANCE=118, 4, SQL_SC_SQL92_ENTRY = 1 SQL_DATETIME_LITERALS=119, 4, 0x00000007 = SQL_DL_SQL92_DATE | SQL_DL_SQL92_TIME | SQL_DL_SQL92_TIMESTAMP SQL_ASYNC_MODE=10021, 4, SQL_AM_STATEMENT = 2 SQL_BATCH_ROW_COUNT=120, 4, 0x00000000 SQL_BATCH_SUPPORT=121, 4, 0x00000000 SQL_BOOKMARK_PERSISTENCE=82, 4, 0x00000000 SQL_CATALOG_LOCATION=114, 2, SQL_CL_START = 1 SQL_CATALOG_NAME=10003, 1, "Y" SQL_CATALOG_NAME_SEPARATOR=41, 1, "." SQL_CATALOG_TERM=42, 6, "System" SQL_CATALOG_USAGE=92, 4, 0x00000000 SQL_COLLATION_SEQ=10004, 0, "" SQL_COLUMN_ALIAS=87, 1, "Y" SQL_CONCAT_NULL_BEHAVIOR=22, 2, SQL_CB_NULL = 0 SQL_CONVERT_BIGINT=53, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_BINARY=54, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_BIT=55, 4, 0x00000000 SQL_CONVERT_CHAR=56, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_DATE=57, 4, 0x00068F01 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_DATE | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY SQL_CONVERT_DECIMAL=58, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_DOUBLE=59, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_FLOAT=60, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY TST0007: The following set bits do not have a corresponding named constant: 0x00000002 SQL_CONVERT_FUNCTIONS=48, 4, 0x00000002 = SQL_CONVERT_INTEGER=61, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_INTERVAL_YEAR_MONTH=124, 4, 0x00000000 SQL_CONVERT_INTERVAL_DAY_TIME=123, 4, 0x00000000 SQL_CONVERT_LONGVARBINARY=71, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_LONGVARCHAR=62, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_NUMERIC=63, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_REAL=64, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_SMALLINT=65, 4, 0x00044FFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_LONGVARBINARY SQL_CONVERT_TIME=66, 4, 0x00070F01 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY SQL_CONVERT_TIMESTAMP=67, 4, 0x00078F01 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY SQL_CONVERT_TINYINT=68, 4, 0x00000000 SQL_CONVERT_VARBINARY=69, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_VARCHAR=70, 4, 0x00E7CFFF = SQL_CVT_CHAR | SQL_CVT_NUMERIC | SQL_CVT_DECIMAL | SQL_CVT_INTEGER | SQL_CVT_SMALLINT | SQL_CVT_FLOAT | SQL_CVT_REAL | SQL_CVT_DOUBLE | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_BINARY | SQL_CVT_VARBINARY | SQL_CVT_BIGINT | SQL_CVT_DATE | SQL_CVT_TIME | SQL_CVT_TIMESTAMP | SQL_CVT_LONGVARBINARY | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_WCHAR=122, 4, 0x00E00301 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_WLONGVARCHAR=125, 4, 0x00E00301 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CONVERT_WVARCHAR=126, 4, 0x00E00301 = SQL_CVT_CHAR | SQL_CVT_VARCHAR | SQL_CVT_LONGVARCHAR | SQL_CVT_WCHAR | SQL_CVT_WLONGVARCHAR | SQL_CVT_WVARCHAR SQL_CORRELATION_NAME=74, 2, SQL_CN_ANY = 2 SQL_CREATE_ASSERTION=127, 4, 0x00000000 SQL_CREATE_CHARACTER_SET=128, 4, 0x00000000 SQL_CREATE_COLLATION=129, 4, 0x00000000 SQL_CREATE_DOMAIN=130, 4, 0x00000000 SQL_CREATE_SCHEMA=131, 4, 0x00000000 SQL_CREATE_TABLE=132, 4, 0x00002601 = SQL_CT_CREATE_TABLE | SQL_CT_COLUMN_CONSTRAINT | SQL_CT_COLUMN_DEFAULT | SQL_CT_CONSTRAINT_NAME_DEFINITION SQL_CREATE_TRANSLATION=133, 4, 0x00000000 SQL_CREATE_VIEW=134, 4, 0x0000000F = SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION | SQL_CV_CASCADED | SQL_CV_LOCAL SQL_CURSOR_COMMIT_BEHAVIOR=23, 2, SQL_CB_PRESERVE = 2 SQL_CURSOR_ROLLBACK_BEHAVIOR=24, 2, SQL_CB_PRESERVE = 2 SQL_CURSOR_SENSITIVITY=10001, 4, SQL_UNSPECIFIED = 0 SQL_DATA_SOURCE_NAME=2, 13, "QDSN_SYSTEM1" SQL_DATA_SOURCE_READ_ONLY=25, 1, "N" SQL_DATABASE_NAME=16, 8, "SYSTEM1" SQL_DBMS_NAME=17, 7, "DB2 UDB" SQL_DBMS_VER=18, 10, "05.01.0010" SQL_DEFAULT_TXN_ISOLATION=26, 4, SQL_TXN_READ_UNCOMMITTED = 1 SQL_DESCRIBE_PARAMETER=10002, 1, "Y" SQL_DM_VER=171, 15, "03.52.4403.0000" SQL_DRIVER_HDBC=3, 4, 0x00000182 SQL_DRIVER_HDESC=135, 4, 0x00000283 SQL_DRIVER_HENV=4, 4, 0x00000081 SQL_DRIVER_HLIB=76, 4, 0x66F30000 SQL_DRIVER_HSTMT=5, 4, 0x00000687 SQL_DRIVER_NAME=6, 11, "CWBODBC.DLL" SQL_DRIVER_ODBC_VER=77, 5, "03.51" SQL_DRIVER_VER=7, 10, "05.02.0000" SQL_DROP_ASSERTION=136, 4, 0x00000000 SQL_DROP_CHARACTER_SET=137, 4, 0x00000000 SQL_DROP_COLLATION=138, 4, 0x00000000 SQL_DROP_DOMAIN=139, 4, 0x00000000 SQL_DROP_SCHEMA=140, 4, 0x00000000 SQL_DROP_TABLE=141, 4, 0x00000001 = SQL_DT_DROP_TABLE SQL_DROP_TRANSLATION=142, 4, 0x00000000 SQL_DROP_VIEW=143, 4, 0x00000001 = SQL_DV_DROP_VIEW SQL_DYNAMIC_CURSOR_ATTRIBUTES1=144, 4, 0x0000E3C7 = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE | SQL_CA1_RELATIVE | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_LOCK_EXCLUSIVE | SQL_CA1_LOCK_UNLOCK | SQL_CA1_POS_POSITION | SQL_CA1_POSITIONED_UPDATE | SQL_CA1_POSITIONED_DELETE | SQL_CA1_SELECT_FOR_UPDATE SQL_DYNAMIC_CURSOR_ATTRIBUTES2=145, 4, 0x000048F3 = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_LOCK_CONCURRENCY | SQL_CA2_SENSITIVITY_ADDITIONS | SQL_CA2_SENSITIVITY_DELETIONS | SQL_CA2_SENSITIVITY_UPDATES | SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_CATALOG | SQL_CA2_SIMULATE_NON_UNIQUE SQL_EXPRESSIONS_IN_ORDERBY=27, 1, "N" SQL_FETCH_DIRECTION=8, 4, 0x0000003F = SQL_FD_FETCH_NEXT | SQL_FD_FETCH_FIRST | SQL_FD_FETCH_LAST | SQL_FD_FETCH_PRIOR | SQL_FD_FETCH_ABSOLUTE | SQL_FD_FETCH_RELATIVE SQL_FILE_USAGE=84, 2, SQL_FILE_NOT_SUPPORTED = 0 SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1=146, 4, 0x0000E3C1 = SQL_CA1_NEXT | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_LOCK_EXCLUSIVE | SQL_CA1_LOCK_UNLOCK | SQL_CA1_POS_POSITION | SQL_CA1_POSITIONED_UPDATE | SQL_CA1_POSITIONED_DELETE | SQL_CA1_SELECT_FOR_UPDATE SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2=147, 4, 0x000048F3 = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_LOCK_CONCURRENCY | SQL_CA2_SENSITIVITY_ADDITIONS | SQL_CA2_SENSITIVITY_DELETIONS | SQL_CA2_SENSITIVITY_UPDATES | SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_CATALOG | SQL_CA2_SIMULATE_NON_UNIQUE SQL_GETDATA_EXTENSIONS=81, 4, 0x00000003 = SQL_GD_ANY_COLUMN | SQL_GD_ANY_ORDER SQL_GROUP_BY=88, 2, SQL_GB_GROUP_BY_CONTAINS_SELECT = 2 SQL_IDENTIFIER_CASE=28, 2, SQL_IC_UPPER = 1 SQL_IDENTIFIER_QUOTE_CHAR=29, 1, """ SQL_INDEX_KEYWORDS=148, 4, 0x00000003 = SQL_IK_ASC | SQL_IK_DESC SQL_INFO_SCHEMA_VIEWS=149, 4, 0x00000000 SQL_INTEGRITY=73, 1, "Y" SQL_KEYSET_CURSOR_ATTRIBUTES1=150, 4, 0x0000E3C7 = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE | SQL_CA1_RELATIVE | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_LOCK_EXCLUSIVE | SQL_CA1_LOCK_UNLOCK | SQL_CA1_POS_POSITION | SQL_CA1_POSITIONED_UPDATE | SQL_CA1_POSITIONED_DELETE | SQL_CA1_SELECT_FOR_UPDATE SQL_KEYSET_CURSOR_ATTRIBUTES2=151, 4, 0x000048F3 = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_LOCK_CONCURRENCY | SQL_CA2_SENSITIVITY_ADDITIONS | SQL_CA2_SENSITIVITY_DELETIONS | SQL_CA2_SENSITIVITY_UPDATES | SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_CATALOG | SQL_CA2_SIMULATE_NON_UNIQUE SQL_KEYWORDS=89, 254, "CCSID,COLLECTION,COMMENT,CONCAT,CROSS,CURRENT_SERVER,CURRENT_TIM EZONE,CURRENT_USER,DATA,DATABASE,DAYS,DEFAULT,HOURS,INOUT,MICROSECOND, MICROSECONDS,MINUTES,MONTHS,OPTIMIZE,OUT,PACKAGE,PROGRAM,REFERENCES,RE SET,ROW,RRN,RUN,SECONDS,SIMPLE,TRIM,VARIABLE,YEARS" SQL_LIKE_ESCAPE_CLAUSE=113, 1, "Y" SQL_LOCK_TYPES=78, 4, 0x00000007 = SQL_LCK_NO_CHANGE | SQL_LCK_EXCLUSIVE | SQL_LCK_UNLOCK SQL_MAX_ASYNC_CONCURRENT_STATEMENTS=10022, 4, 0 SQL_MAX_BINARY_LITERAL_LEN=112, 2, 32739 SQL_MAX_CATALOG_NAME_LEN=34, 2, 18 SQL_MAX_CHAR_LITERAL_LEN=108, 4, 32739 SQL_MAX_COLUMN_NAME_LEN=30, 2, 30 SQL_MAX_COLUMNS_IN_GROUP_BY=97, 2, 120 SQL_MAX_COLUMNS_IN_INDEX=98, 2, 120 SQL_MAX_COLUMNS_IN_ORDER_BY=99, 2, 10000 SQL_MAX_COLUMNS_IN_SELECT=100, 2, 8000 SQL_MAX_COLUMNS_IN_TABLE=101, 2, 8000 SQL_MAX_CONCURRENT_ACTIVITIES=1, 2, 0 SQL_MAX_CURSOR_NAME_LEN=31, 2, 18 SQL_MAX_DRIVER_CONNECTIONS=0, 2, 0 SQL_MAX_IDENTIFIER_LEN=10005, 2, 18 SQL_MAX_INDEX_SIZE=102, 4, 123 SQL_MAX_PROCEDURE_NAME_LEN=33, 2, 128 SQL_MAX_ROW_SIZE=104, 4, 32740 SQL_MAX_ROW_SIZE_INCLUDES_LONG=103, 1, "N" SQL_MAX_SCHEMA_NAME_LEN=32, 2, 10 SQL_MAX_STATEMENT_LEN=105, 4, 32767 SQL_MAX_TABLE_NAME_LEN=35, 2, 128 SQL_MAX_TABLES_IN_SELECT=106, 2, 32 SQL_MAX_USER_NAME_LEN=107, 2, 10 SQL_MAX_OWNER_NAME_LEN=32, 2, 10 SQL_MAX_QUALIFIER_NAME_LEN=34, 2, 18 SQL_MULT_RESULT_SETS=36, 1, "Y" SQL_MULTIPLE_ACTIVE_TXN=37, 1, "Y" SQL_NEED_LONG_DATA_LEN=111, 1, "N" SQL_NON_NULLABLE_COLUMNS=75, 2, SQL_NNC_NON_NULL = 1 SQL_NULL_COLLATION=85, 2, SQL_NC_HIGH = 0 SQL_NUMERIC_FUNCTIONS=49, 4, 0x001DEFCF = SQL_FN_NUM_ABS | SQL_FN_NUM_ACOS | SQL_FN_NUM_ASIN | SQL_FN_NUM_ATAN | SQL_FN_NUM_COS | SQL_FN_NUM_COT | SQL_FN_NUM_EXP | SQL_FN_NUM_FLOOR | SQL_FN_NUM_LOG | SQL_FN_NUM_MOD | SQL_FN_NUM_SIN | SQL_FN_NUM_SQRT | SQL_FN_NUM_TAN | SQL_FN_NUM_PI | SQL_FN_NUM_DEGREES | SQL_FN_NUM_LOG10 | SQL_FN_NUM_POWER SQL_ODBC_API_CONFORMANCE=9, 2, SQL_OAC_LEVEL2 = 2 SQL_ODBC_INTERFACE_CONFORMANCE=152, 4, SQL_OIC_LEVEL1 = 2 SQL_ODBC_SAG_CLI_CONFORMANCE=12, 2, SQL_OSCC_COMPLIANT = 1 SQL_ODBC_SQL_CONFORMANCE=15, 2, SQL_OSC_CORE = 1 SQL_ODBC_SQL_OPT_IEF=73, 1, "Y" SQL_ODBC_VER=10, 10, "03.52.0000" SQL_OJ_CAPABILITIES=115, 4, 0x0000007B = SQL_OJ_LEFT | SQL_OJ_RIGHT | SQL_OJ_NESTED | SQL_OJ_NOT_ORDERED | SQL_OJ_INNER | SQL_OJ_ALL_COMPARISON_OPS SQL_OUTER_JOINS=38, 1, "Y" SQL_OWNER_TERM=39, 6, "Schema" SQL_ORDER_BY_COLUMNS_IN_SELECT=90, 1, "Y" SQL_OWNER_USAGE=91, 4, 0x0000001F = SQL_OU_DML_STATEMENTS | SQL_OU_PROCEDURE_INVOCATION | SQL_OU_TABLE_DEFINITION | SQL_OU_INDEX_DEFINITION | SQL_OU_PRIVILEGE_DEFINITION SQL_PARAM_ARRAY_ROW_COUNTS=153, 4, SQL_PARC_BATCH = 1 SQL_PARAM_ARRAY_SELECTS=154, 4, SQL_PAS_NO_SELECT = 3 SQL_POS_OPERATIONS=79, 4, 0x00000001 = SQL_POS_POSITION SQL_POSITIONED_STATEMENTS=80, 4, 0x00000007 = SQL_PS_POSITIONED_DELETE | SQL_PS_POSITIONED_UPDATE | SQL_PS_SELECT_FOR_UPDATE SQL_PROCEDURE_TERM=40, 9, "Procedure" SQL_PROCEDURES=21, 1, "Y" SQL_QUALIFIER_USAGE=92, 4, 0x00000000 SQL_QUOTED_IDENTIFIER_CASE=93, 2, SQL_IC_SENSITIVE = 3 SQL_QUALIFIER_NAME_SEPARATOR=41, 1, "." SQL_QUALIFIER_TERM=42, 6, "System" SQL_QUALIFIER_LOCATION=114, 2, SQL_CL_START = 1 SQL_ROW_UPDATES=11, 1, "N" SQL_SCHEMA_TERM=39, 6, "Schema" SQL_SCHEMA_USAGE=91, 4, 0x0000001F = SQL_OU_DML_STATEMENTS | SQL_OU_PROCEDURE_INVOCATION | SQL_OU_TABLE_DEFINITION | SQL_OU_INDEX_DEFINITION | SQL_OU_PRIVILEGE_DEFINITION SQL_SCROLL_OPTIONS=44, 4, 0x00000015 = SQL_SO_FORWARD_ONLY | SQL_SO_DYNAMIC | SQL_SO_STATIC SQL_SCROLL_CONCURRENCY=43, 4, 0x00000003 = SQL_SCCO_READ_ONLY | SQL_SCCO_LOCK SQL_SEARCH_PATTERN_ESCAPE=14, 1, "\" SQL_SERVER_NAME=13, 8, "SYSTEM1" SQL_SPECIAL_CHARACTERS=94, 21, " "%&'*+,|-./:;<=>?$@#" SQL_SQL92_DATETIME_FUNCTIONS=155, 4, 0x00000007 = SQL_SDF_CURRENT_DATE | SQL_SDF_CURRENT_TIME | SQL_SDF_CURRENT_TIMESTAMP SQL_SQL92_FOREIGN_KEY_DELETE_RULE=156, 4, 0x0000000F = SQL_SFKD_CASCADE | SQL_SFKD_NO_ACTION | SQL_SFKD_SET_DEFAULT | SQL_SFKD_SET_NULL SQL_SQL92_FOREIGN_KEY_UPDATE_RULE=157, 4, 0x00000002 = SQL_SFKU_NO_ACTION SQL_SQL92_GRANT=158, 4, 0x00000D70 = SQL_SG_WITH_GRANT_OPTION | SQL_SG_DELETE_TABLE | SQL_SG_INSERT_TABLE | SQL_SG_REFERENCES_TABLE | SQL_SG_SELECT_TABLE | SQL_SG_UPDATE_TABLE SQL_SQL92_NUMERIC_VALUE_FUNCTIONS=159, 4, 0x00000026 = SQL_SNVF_CHAR_LENGTH | SQL_SNVF_CHARACTER_LENGTH | SQL_SNVF_POSITION SQL_SQL92_PREDICATES=160, 4, 0x00003E07 = SQL_SP_EXISTS | SQL_SP_ISNOTNULL | SQL_SP_ISNULL | SQL_SP_LIKE | SQL_SP_IN | SQL_SP_BETWEEN | SQL_SP_COMPARISON | SQL_SP_QUANTIFIED_COMPARISON SQL_SQL92_RELATIONAL_JOIN_OPERATORS=161, 4, 0x00000052 = SQL_SRJO_CROSS_JOIN | SQL_SRJO_INNER_JOIN | SQL_SRJO_LEFT_OUTER_JOIN SQL_SQL92_REVOKE=162, 4, 0x000035E0 = SQL_SR_CASCADE | SQL_SR_RESTRICT | SQL_SR_DELETE_TABLE | SQL_SR_INSERT_TABLE | SQL_SR_REFERENCES_TABLE | SQL_SR_SELECT_TABLE | SQL_SR_UPDATE_TABLE SQL_SQL92_ROW_VALUE_CONSTRUCTOR=163, 4, 0x00000000 SQL_SQL92_STRING_FUNCTIONS=164, 4, 0x000000FE = SQL_SSF_LOWER | SQL_SSF_UPPER | SQL_SSF_SUBSTRING | SQL_SSF_TRANSLATE | SQL_SSF_TRIM_BOTH | SQL_SSF_TRIM_LEADING | SQL_SSF_TRIM_TRAILING SQL_SQL92_VALUE_EXPRESSIONS=165, 4, 0x00000004 = SQL_SVE_COALESCE SQL_STANDARD_CLI_CONFORMANCE=166, 4, 0x00000001 = SQL_SCC_XOPEN_CLI_VERSION1 SQL_STATIC_CURSOR_ATTRIBUTES1=167, 4, 0x00000247 = SQL_CA1_NEXT | SQL_CA1_ABSOLUTE | SQL_CA1_RELATIVE | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_POS_POSITION SQL_STATIC_CURSOR_ATTRIBUTES2=168, 4, 0x00001081 = SQL_CA2_READ_ONLY_CONCURRENCY | SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_CRC_EXACT SQL_STATIC_SENSITIVITY=83, 4, 0x00000000 SQL_STRING_FUNCTIONS=50, 4, 0x00001F9F = SQL_FN_STR_CONCAT | SQL_FN_STR_INSERT | SQL_FN_STR_LEFT | SQL_FN_STR_LTRIM | SQL_FN_STR_LENGTH | SQL_FN_STR_REPEAT | SQL_FN_STR_REPLACE | SQL_FN_STR_RIGHT | SQL_FN_STR_RTRIM | SQL_FN_STR_SUBSTRING | SQL_FN_STR_UCASE SQL_SUBQUERIES=95, 4, 0x0000001F = SQL_SQ_COMPARISON | SQL_SQ_EXISTS | SQL_SQ_IN | SQL_SQ_QUANTIFIED | SQL_SQ_CORRELATED_SUBQUERIES SQL_SYSTEM_FUNCTIONS=51, 4, 0x00000007 = SQL_FN_SYS_USERNAME | SQL_FN_SYS_DBNAME | SQL_FN_SYS_IFNULL SQL_TABLE_TERM=45, 5, "Table" SQL_TIMEDATE_ADD_INTERVALS=109, 4, 0x00000000 SQL_TIMEDATE_DIFF_INTERVALS=110, 4, 0x00000000 SQL_TIMEDATE_FUNCTIONS=52, 4, 0x000E1FFF = SQL_FN_TD_NOW | SQL_FN_TD_CURDATE | SQL_FN_TD_DAYOFMONTH | SQL_FN_TD_DAYOFWEEK | SQL_FN_TD_DAYOFYEAR | SQL_FN_TD_MONTH | SQL_FN_TD_QUARTER | SQL_FN_TD_WEEK | SQL_FN_TD_YEAR | SQL_FN_TD_CURTIME | SQL_FN_TD_HOUR | SQL_FN_TD_MINUTE | SQL_FN_TD_SECOND | SQL_FN_TD_CURRENT_DATE | SQL_FN_TD_CURRENT_TIME | SQL_FN_TD_CURRENT_TIMESTAMP SQL_TXN_CAPABLE=46, 2, SQL_TC_ALL = 2 SQL_TXN_ISOLATION_OPTION=72, 4, 0x0000000F = SQL_TXN_READ_UNCOMMITTED | SQL_TXN_READ_COMMITTED | SQL_TXN_REPEATABLE_READ | SQL_TXN_SERIALIZABLE SQL_UNION=96, 4, 0x00000003 = SQL_U_UNION | SQL_U_UNION_ALL
Hi, with this SQLGetInfo dump we found a bug in the openoffice code. assign to oj@openoffice.org for fixing. thanks again for the dump. Bye Marc
The problem is that we quote the name without asking the metadata if we should do so. In file dba/connectivity/source/commontools/dbtools.cxx the method composeTableName has to changed. I'll do this asap, but when you would like to do this and test it with your environment it would be perfect. Best regards, Ocke
I can try out a test fix at any time...just let me know Marc, Ocke, did you look into the other possible bug with about adding the Catalog name to the SELECT when SQL_CATALOG_USAGE is NULL? Or should I open another defect?
Now all table names will be expaned by schema and catalog name when the DatabaseMetaData says so. This means that the catalog and schema name will be used when the coresponding method for DataManipulation (SELECT), InTableDefinition (CREATE TABLE) or in IndexDefinition (CREATE INDEX) returns true.
I would like to verify this fix. What driver is this fix in?
The fix is a little bit complicated to build. You need the modules dbaccess and connectivity, also forms and svx. First you have to build connectivity and deliver it. After that you have to build the others. The version of OpenOffice with this fixes could work are, is SRX643. Sorry that it is that compilcated. But there is one method which does all the quoting. Perhaps you may have a look at connectivity/inc/connectivity/dbtools.hxx and connectivity/source/commontools/dbtools.cxx:composeTableName,quoteTableName Best regards, Ocke
I just installed Red Hat 8 i386 with open office 1.0.1-8 and this problem still exists. What 1.x release will this get fixed in?
Sorry for the delay. This task should be fixed in the next release after SRX643C.
send to QA
rather your playground
Fix in next developer build.
verfied in 644 m4
close
change subcomponent to 'none'