1. Introduction 1.1. Project/Component Working Name: Including MySQL 5.0 64bit and connectors with Solaris 1.2. Name of Document Author/Supplier: Author: Jan Berg 1.3 Date of This Document: 25 February, 2008 1.4 Description: This FastTrack delivers MySQL 5.0 64 bit and connectors as a component in OpenSolaris sfw consolidation. MySQL 32 bit server,clients and c-api with man pages and testsuites has already been integrated into OpenSolaris. With this Fasttrack we want to integrate also 64 bit binaries and libraries into OpenSolaris. We also want to integrate the JDBC and ODBC Connectors. This case seeks Minor Release Binding. 1.5 Previous Relevant ARC cases LSARC 2007/608 - Including MySQL 5.0 with Solaris 2. Technical issues 2.1 32 and 64 bit architectures. MySQL is already delivered with 32 bit architecture for binaries. We will now deliver 64 bit. The Connector/ODBC will also be delivered in 64 bit. 2.2 APIs With this fasttrack we will also deliver the MySQL JDBC and ODBC Connectors. JDBC Connector 5.1.5 is a JDBC 4 compliant JDBC Driver (type 4) for MySQL. ODBC Connector 3.51.23 is based on ODBC version 3.5. Note also that the Connectors are independent of the MySQL server version in this or the previous ARC case. They should be both backward and forward compatible. 2.3 Directory Naming and Structure The directory structure for 64 bit: /usr/mysql/5.0 /bin/64 softlink to appropriate 64 bit directory /bin/amd64 amd only 64bit binaries /bin/sparcv9 sparc only 64bit binaries /lib/64 softlink to appropriate 64 bit directory /lib/amd64 amd only 64bit libraries /lib/sparcv9 sparc only 64bit libraries The directory structure for Connectors: /usr/mysql/connectors /odbc/3.5/bin 32bit ODBC binaries /odbc/3.5/64 softlink to appropriate 64 bit directory /odbc/3.5/bin/amd64 amd only 64bit ODBC binaries /odbc/3.5/bin/sparcv9 sparc only 64bit ODBC binaries /odbc/3.5/lib 32bit ODBC binaries /odbc/3.5/lib/64 softlink to appropriate 64 bit directory /odbc/3.5/lib/amd64 amd only 64bit ODBC binaries /odbc/3.5/lib/sparcv9 sparc only 64bit ODBC binaries /odbc/3.5/doc ODBC documentation and example config /jdbc/5.1/ JDBC Driver and documentation See Appendix A for detailed file-listing. 2.4 SMF We will use the already delivered SMF metafile as well as a SMF startup script. We will add a property, called enable_64bit, to the SMF service for choosing between 32 and 64 bit. Default will always be 32 bit. It should be noted that, when switching between 32bit and 64bit server using the same data-files, all the current major storage engines (with one exception) are architecture neutral, both in endian-ness and bit size. You should be able to copy a 64-bit or 32-bit DB either way, and even between platforms without problems for MyISAM, InnoDB and NDB. For other engines it doesn't matter (CSV, MEMORY, MERGE, BLACKHOLE and FEDERATED) either the engine doesn't have a disk storage format or the format they use is text based (CSV) or based on MyISAM (MERGE; and therefore not an issue). The only exception is Falcon, which is only available in MySQL 6.0. It is generally recommended from MySQL that a dump and reload of data for absolute compatibility for any engine and major migration. 3. MySQL Documentation Will be adding documentation how to enable 64 bit to the existing documentation. Documentation for Connector/JDBC and Connector/ODBC will be added. 4. Packaging and Delivery We propose to have the MySQL 64bit and connectors under the following packages: SUNWmysql5u - [usr] Server package (existing, but will be adding 64 bit binaries/libraries and updated documentation) SUNWmysql5jdbc - New package for the JDBC Connector SUNWmysql3odbc - New package for ODBC Connector Multiple versions can coexist, and are distinguished by the version (5 for version 5.0.*). The ODBC driver is version 3.51.x and does not follow the usual MySQL version numbering. Both Connectors should work with different versions of MySQL, but newer versions (post 5.0) of the server might have new functionality not provided by these versions of the Connectors. 5. MySQL Interfaces 5.1. Interface Stability MySQL is a mature product and the interfaces are stable and has been available for a long time in the open source community as well as an established product. As a database MySQL also supports the standard database interfaces (SQL92,SQL99,SQL2003). The MySQL JDBC and ODBC Connectors follow the JDBC (including version 4) and ODBC (version 3.5) standards and hence need to be stable. 5.2. Imported Interfaces MySQL 64bit and connectors imports and make use of interfaces from NAME STABILITY NOTES UnixODBC Uncommitted LSARC/2007/684 MySQL 5.0 Committed LSARC/2007/608 UnixODBC is used as the driver manager for Connector/ODBC. Connector/J is implementing JSR 221. And this ARC case is adding 64bit to the 32bit MySQL 5.0 ARC case. 5.3. Exported Interfaces NAME STABILITY NOTES MySQL Connector/J Committed JDBC Client API MySQL Connector/ODBC Committed ODBC Client API svc:/application/database/mysql:version_50 Committed FMRI adding property enable_64bit The interfaces have existed for a long time in the MySQL community, and the interfaces are also following the JDBC (including 4.0) and ODBC 3.5 standards. For the 5.0 release we don't expect changes in the interfaces. The SMF service will be updated to set a property to enable 64 bit server. Default will be 32 bit. 6. References [1] http://www.mysql.org/ --- Appendix A - file listing of added files: JDBC Driver: /usr/mysql/connectors/jdbc/5.1/mysql-connector-java-5.1.5-bin.jar /usr/mysql/connectors/jdbc/5.1/docs/cj-news.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j-reference.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j-versions.html /usr/mysql/connectors/jdbc/5.1/docs/mysql-html.css /usr/mysql/connectors/jdbc/5.1/docs/connector-j-examples.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j-support.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j-installing.html /usr/mysql/connectors/jdbc/5.1/docs/connector-j-usagenotes.html /usr/mysql/connectors/jdbc/5.1/docs/index.html ODBC Driver: /usr/mysql/connectors/odbc/3.51/bin/myodbc3i /usr/mysql/connectors/odbc/3.51/bin/myodbc3m /usr/mysql/connectors/odbc/3.51/bin/64 -> /usr/mysql/connectors/odbc/3.51/bin/sparcv9 /usr/mysql/connectors/odbc/3.51/bin/sparcv9/myodbc3i /usr/mysql/connectors/odbc/3.51/bin/sparcv9/myodbc3m /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3_r-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3_r.so /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3S-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3S.so /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/libmyodbc3.so /usr/mysql/connectors/odbc/3.51/lib/64 -> /usr/mysql/connectors/odbc/3.51/lib/sparcv9 /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3_r-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3_r.so /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3S-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3S.so /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3-3.51.20.so /usr/mysql/connectors/odbc/3.51/lib/sparcv9/libmyodbc3.so /usr/mysql/connectors/odbc/3.51/docs/README /usr/mysql/connectors/odbc/3.51/docs/odbc.ini /usr/mysql/connectors/odbc/3.51/docs/odbcinst.ini 64 bit files (sparcv9 listing only, exact same for amd64): /usr/mysql/5.0/bin/64 -> usr/mysql/5.0/bin/sparcv9 /usr/mysql/5.0/bin/sparcv9/comp_err /usr/mysql/5.0/bin/sparcv9/mysql_convert_table_format /usr/mysql/5.0/bin/sparcv9/mysql_upgrade_shell /usr/mysql/5.0/bin/sparcv9/mysqldump /usr/mysql/5.0/bin/sparcv9/ndb_cpcd /usr/mysql/5.0/bin/sparcv9/ndb_show_tables /usr/mysql/5.0/bin/sparcv9/innochecksum /usr/mysql/5.0/bin/sparcv9/mysql_explain_log /usr/mysql/5.0/bin/sparcv9/mysql_waitpid /usr/mysql/5.0/bin/sparcv9/mysqldumpslow /usr/mysql/5.0/bin/sparcv9/ndb_delete_all /usr/mysql/5.0/bin/sparcv9/ndb_size.pl /usr/mysql/5.0/bin/sparcv9/msql2mysql /usr/mysql/5.0/bin/sparcv9/mysql_find_rows /usr/mysql/5.0/bin/sparcv9/mysql_zap /usr/mysql/5.0/bin/sparcv9/mysqlhotcopy /usr/mysql/5.0/bin/sparcv9/ndb_desc /usr/mysql/5.0/bin/sparcv9/ndb_test_platform /usr/mysql/5.0/bin/sparcv9/my_print_defaults /usr/mysql/5.0/bin/sparcv9/mysql_fix_extensions /usr/mysql/5.0/bin/sparcv9/mysqlaccess /usr/mysql/5.0/bin/sparcv9/mysqlimport /usr/mysql/5.0/bin/sparcv9/ndb_drop_index /usr/mysql/5.0/bin/sparcv9/ndb_waiter /usr/mysql/5.0/bin/sparcv9/myisam_ftdump /usr/mysql/5.0/bin/sparcv9/mysql_fix_privilege_tables /usr/mysql/5.0/bin/sparcv9/mysqladmin /usr/mysql/5.0/bin/sparcv9/mysqlmanager /usr/mysql/5.0/bin/sparcv9/ndb_drop_table /usr/mysql/5.0/bin/sparcv9/ndbd /usr/mysql/5.0/bin/sparcv9/myisamchk /usr/mysql/5.0/bin/sparcv9/mysql_install_db /usr/mysql/5.0/bin/sparcv9/mysqlbinlog /usr/mysql/5.0/bin/sparcv9/mysqlshow /usr/mysql/5.0/bin/sparcv9/ndb_error_reporter /usr/mysql/5.0/bin/sparcv9/perror /usr/mysql/5.0/bin/sparcv9/myisamlog /usr/mysql/5.0/bin/sparcv9/mysql_secure_installation /usr/mysql/5.0/bin/sparcv9/mysqlbug /usr/mysql/5.0/bin/sparcv9/mysqltest /usr/mysql/5.0/bin/sparcv9/ndb_mgm /usr/mysql/5.0/bin/sparcv9/replace /usr/mysql/5.0/bin/sparcv9/myisampack /usr/mysql/5.0/bin/sparcv9/mysql_setpermission /usr/mysql/5.0/bin/sparcv9/mysqlcheck /usr/mysql/5.0/bin/sparcv9/mysqltestmanager /usr/mysql/5.0/bin/sparcv9/ndb_mgmd /usr/mysql/5.0/bin/sparcv9/resolve_stack_dump /usr/mysql/5.0/bin/sparcv9/mysql /usr/mysql/5.0/bin/sparcv9/mysql_tableinfo /usr/mysql/5.0/bin/sparcv9/mysqld /usr/mysql/5.0/bin/sparcv9/mysqltestmanager-pwgen /usr/mysql/5.0/bin/sparcv9/ndb_restore /usr/mysql/5.0/bin/sparcv9/resolveip /usr/mysql/5.0/bin/sparcv9/mysql_client_test /usr/mysql/5.0/bin/sparcv9/mysql_tzinfo_to_sql /usr/mysql/5.0/bin/sparcv9/mysqld_multi /usr/mysql/5.0/bin/sparcv9/mysqltestmanagerc /usr/mysql/5.0/bin/sparcv9/ndb_select_all /usr/mysql/5.0/bin/sparcv9/mysql_config /usr/mysql/5.0/bin/sparcv9/mysql_upgrade /usr/mysql/5.0/bin/sparcv9/mysqld_safe /usr/mysql/5.0/bin/sparcv9/ndb_config /usr/mysql/5.0/bin/sparcv9/ndb_select_count /usr/mysql/5.0/lib/sparcv9/mysql/libdbug.a /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient_r.so /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient.so /usr/mysql/5.0/lib/sparcv9/mysql/libmysys.a /usr/mysql/5.0/lib/sparcv9/mysql/libndbclient.so.2.0.0 /usr/mysql/5.0/lib/sparcv9/mysql/libmyisam.a /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient_r.so.15 /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient.so.15 /usr/mysql/5.0/lib/sparcv9/mysql/libndbclient.a /usr/mysql/5.0/lib/sparcv9/mysql/libmyisammrg.a /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient_r.so.15.0.0 /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient.so.15.0.0 /usr/mysql/5.0/lib/sparcv9/mysql/libndbclient.so /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient_r.a /usr/mysql/5.0/lib/sparcv9/mysql/libmysqlclient.a /usr/mysql/5.0/lib/sparcv9/mysql/libmystrings.a /usr/mysql/5.0/lib/sparcv9/mysql/libndbclient.so.2