Difference between revisions of "Database/Drivers/MySQL Native/Known Driver Problems"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Base related)
(TIME value range)
Line 9: Line 9:
 
=== TIME value range ===
 
=== TIME value range ===
  
[http://dev.mysql.com/doc/refman/5.1/en/time.html|MySQL's TIME] data type may have a significantly larger value range than the Base counterpart.
+
[http://dev.mysql.com/doc/refman/5.1/en/time.html|MySQL's TIME] data type may have a significantly larger value range than the Base counterpart. Base is using an unsigned short to represent Time values.
  
 
=== Empty schemata not shown ===
 
=== Empty schemata not shown ===

Revision as of 11:14, 11 December 2008

Connector/OpenOffice.org development issues to discuss with OOo team

Base related

ENUM/SET "not supported"

ENUM/SET are mapped into VARCHAR. This will - sooner or later - cause follow-up errors, for example, when inserting values. This is a known Base restriction and should be documented in the Driver manual as a pitfall.

TIME value range

TIME data type may have a significantly larger value range than the Base counterpart. Base is using an unsigned short to represent Time values.

Empty schemata not shown

Create an empty schemata/database. Create a new Base database which connects to an empty MySQL database. The MySQL database is not show. Reason: OOo calls getTables() - no tables - schema not displayed. Setting might even be cached - verify that database becomes visible after creating table (from mysql prompt) in schema.

DECIMAL shown as TEXT

Base shows numerical DECIMAL columns as TEXT. I'm 95% sure C/C++ and C/OOo report a proper column type.

OOo shows unrelated databases/schemata

Create a new Base database that connects to a MySQL schemata "test". Have "test" in the connection settings! OOo will ignore it and query MySQL for all tables in all schematas.


000514/01/0000116      OConnection::getMetaData
0000515/01/0000117      ODatabaseMetaData::getURL
0000517/01/0000118      OConnection::getMetaData
0000518/01/0000119      ODatabaseMetaData::getTables
0000519/01/0000120              >MySQL_ConnectionMetaData::getTables
0000520/02/0000121              |  INF: catalog= schemaPattern=% tablePattern=%

As a consequence the user will see all schemata he has access to not only the schemata/database "test" as requested in the connection settings

No default schema on table creation

Base does not preselect a default schema in the table editor dialog. Its does not even if you connect to a schema (see also OOo shows unrelated databases/schemata)

No way to set MySQL specific table attributes

The Base table editor does not give access to table attributes. Not even basic ones such as the Engine (MyISAM: non-transactional, InnoDB: transactional).

Base does not recognize schema changes

After connecting to a database and opening a table once, Base will not recognize changes applied to the DB schema meanwhile when opening the table in the table editor again.

Base table column comments

Likely a Feature Request: Base table column comments are not synchronized with the MySQL DB and its schema.

Unclassified: Base and/or Driver related

Default values not properly processed

The Base table editor neither properly sets default values nor does it re-engineer default values properly.

SMALLINT becomes REAL

When loading a table with a SMALLINT column it is shown as a FLOAT/REAL column in Base

BIGINT values crippled?

Large BIGINT values are displayed in Base using scientific notation: 1e+15. If one changes the display format to number #.### the first 14 values of a large number (9223372036854775807) are displayed properly but then some rounding takes place, for example: 9223372036854800000. Connector/C++ can handle long long (L64) values properly and Base does use getLong() nevertheless the displayed value seems wrong.


MySQL related

information_schema (I_S) not shown in schema list

SHOW DATABASES shows the I_S. When quering the I_S for schema, the I_S will not expose itself. Different versions of Connector/C++ use different ways to fetch schema lists. Until and including Alpha SHOW DATABSES is used.

TINYINT / BOOLEAN

Educate Base users on MySQL Server type mappings, for example BOOL[EAN] -> TINYINT.

DatabseMetaData::getColumns() COLUMN_SIZE

DatabseMetaData::getColumns() takes COLUMN_SIZE from getDisplaySize(). getDisplaySize() returns always 20, which needs to be tweaked on a per-datatype basis.

Affected: DECIMAL/FLOAT.

DatabseMetaData::getColumns() DECIMAL_DIGITS

DatabseMetaData::getColumns() does not set DECIMAL_DIGITS. Therefore, Base does not show it properly.

Personal tools