Issue 3289 - ODBC table and field names incorrectly double quoted
Summary: ODBC table and field names incorrectly double quoted
Status: CLOSED FIXED
Alias: None
Product: Base
Classification: Application
Component: code (show other issues)
Version: 641
Hardware: PC Linux, all
: P2 Trivial (vote)
Target Milestone: OOo 1.1 Beta
Assignee: marc.neumann
QA Contact: issues@dba
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-03-01 17:22 UTC by Unknown
Modified: 2006-05-31 14:29 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Unknown 2002-03-01 17:22:45 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.
Comment 1 dirk.grobler 2002-03-25 08:02:29 UTC
Hi Marc, could you please try to reproduce the bug?
thanks
 Dirk
Comment 2 marc.neumann 2002-03-26 14:01:01 UTC
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
Comment 3 Unknown 2002-04-01 18:51:11 UTC
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.
Comment 4 marc.neumann 2002-04-03 07:26:04 UTC
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
Comment 5 Unknown 2002-04-03 17:10:05 UTC
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
Comment 6 marc.neumann 2002-04-04 07:21:00 UTC
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
Comment 7 ocke.janssen 2002-04-04 08:03:50 UTC
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
Comment 8 Unknown 2002-04-04 15:42:05 UTC
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?
Comment 9 ocke.janssen 2002-10-07 14:14:55 UTC
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.
Comment 10 Unknown 2002-10-07 20:42:21 UTC
I would like to verify this fix. What driver is this fix in?
Comment 11 ocke.janssen 2002-10-08 13:07:59 UTC
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
Comment 12 Unknown 2002-11-18 21:17:42 UTC
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?
Comment 13 ocke.janssen 2002-12-13 10:06:20 UTC
Sorry for the delay.

This task should be fixed in the next release after SRX643C.
Comment 14 ocke.janssen 2003-01-10 08:49:02 UTC
send to QA
Comment 15 ocke.janssen 2003-01-10 08:49:20 UTC
send to QA
Comment 16 christoph.lukasiak 2003-01-23 11:08:52 UTC
rather your playground
Comment 17 marc.neumann 2003-01-29 08:53:53 UTC
Fix in next developer build.
Comment 18 marc.neumann 2003-03-21 09:23:53 UTC
verfied in 644 m4
Comment 19 marc.neumann 2003-03-21 09:24:05 UTC
close
Comment 20 hans_werner67 2004-02-02 12:55:34 UTC
change subcomponent to 'none'