office-gobmx/connectivity
Caolán McNamara 7bbe74b2be cid#1555789 COPY_INSTEAD_OF_MOVE
and

cid#1556865 COPY_INSTEAD_OF_MOVE
cid#1556871 COPY_INSTEAD_OF_MOVE
cid#1556939 COPY_INSTEAD_OF_MOVE
cid#1556951 COPY_INSTEAD_OF_MOVE
cid#1556964 COPY_INSTEAD_OF_MOVE
cid#1556966 COPY_INSTEAD_OF_MOVE
cid#1556968 COPY_INSTEAD_OF_MOVE
cid#1556971 COPY_INSTEAD_OF_MOVE
cid#1556989 COPY_INSTEAD_OF_MOVE
cid#1557001 COPY_INSTEAD_OF_MOVE
cid#1557011 COPY_INSTEAD_OF_MOVE
cid#1557032 COPY_INSTEAD_OF_MOVE
cid#1557038 COPY_INSTEAD_OF_MOVE
cid#1557041 COPY_INSTEAD_OF_MOVE
cid#1557055 COPY_INSTEAD_OF_MOVE
cid#1557056 COPY_INSTEAD_OF_MOVE
cid#1557057 COPY_INSTEAD_OF_MOVE
cid#1557065 COPY_INSTEAD_OF_MOVE
cid#1557068 COPY_INSTEAD_OF_MOVE
cid#1557087 COPY_INSTEAD_OF_MOVE
cid#1557090 COPY_INSTEAD_OF_MOVE
cid#1557093 COPY_INSTEAD_OF_MOVE
cid#1557113 COPY_INSTEAD_OF_MOVE
cid#1557122 COPY_INSTEAD_OF_MOVE
cid#1557126 COPY_INSTEAD_OF_MOVE
cid#1557145 COPY_INSTEAD_OF_MOVE
cid#1557151 COPY_INSTEAD_OF_MOVE
cid#1557152 COPY_INSTEAD_OF_MOVE
cid#1557197 COPY_INSTEAD_OF_MOVE
cid#1557216 COPY_INSTEAD_OF_MOVE
cid#1557245 COPY_INSTEAD_OF_MOVE
cid#1557272 COPY_INSTEAD_OF_MOVE
cid#1557310 COPY_INSTEAD_OF_MOVE
cid#1557314 COPY_INSTEAD_OF_MOVE
cid#1557318 COPY_INSTEAD_OF_MOVE
cid#1557333 COPY_INSTEAD_OF_MOVE
cid#1557340 COPY_INSTEAD_OF_MOVE
cid#1557358 COPY_INSTEAD_OF_MOVE
cid#1557359 COPY_INSTEAD_OF_MOVE
cid#1557365 COPY_INSTEAD_OF_MOVE
cid#1557367 COPY_INSTEAD_OF_MOVE
cid#1557395 COPY_INSTEAD_OF_MOVE
cid#1557418 COPY_INSTEAD_OF_MOVE
cid#1557488 COPY_INSTEAD_OF_MOVE
cid#1557493 COPY_INSTEAD_OF_MOVE
cid#1557506 COPY_INSTEAD_OF_MOVE
cid#1557514 COPY_INSTEAD_OF_MOVE
cid#1557528 COPY_INSTEAD_OF_MOVE
cid#1557534 COPY_INSTEAD_OF_MOVE
cid#1557537 COPY_INSTEAD_OF_MOVE
cid#1557562 COPY_INSTEAD_OF_MOVE
cid#1557563 COPY_INSTEAD_OF_MOVE
cid#1557592 COPY_INSTEAD_OF_MOVE
cid#1557608 COPY_INSTEAD_OF_MOVE
cid#1557615 COPY_INSTEAD_OF_MOVE
cid#1557619 COPY_INSTEAD_OF_MOVE
cid#1557637 COPY_INSTEAD_OF_MOVE
cid#1557648 COPY_INSTEAD_OF_MOVE
cid#1557712 COPY_INSTEAD_OF_MOVE
cid#1557750 COPY_INSTEAD_OF_MOVE
cid#1557762 COPY_INSTEAD_OF_MOVE
cid#1557765 COPY_INSTEAD_OF_MOVE

Change-Id: I10db1910627e04a26e25836c05ad5c2707abd18b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175696
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Tested-by: Jenkins
2024-10-27 20:19:12 +01:00
..
com/sun/star/sdbcx/comp/hsqldb
inc
org/hsqldb/lib
qa
registry
source cid#1555789 COPY_INSTEAD_OF_MOVE 2024-10-27 20:19:12 +01:00
workben
AllLangMoTarget_cnr.mk
Configuration_ado.mk
Configuration_calc.mk
Configuration_dbase.mk
Configuration_evoab.mk
Configuration_firebird.mk
Configuration_flat.mk
Configuration_hsqldb.mk
Configuration_jdbc.mk
Configuration_macab.mk
Configuration_mysql.mk
Configuration_mysql_jdbc.mk
Configuration_odbc.mk
Configuration_postgresql.mk
Configuration_writer.mk
CppunitTest_connectivity_ado.mk
CppunitTest_connectivity_commontools.mk
CppunitTest_connectivity_mysql_test.mk
CppunitTest_connectivity_sharedresources.mk
IwyuFilter_connectivity.yaml
Jar_ConnectivityTools.mk
Jar_sdbc_hsqldb.mk
JunitTest_complex.mk
Library_ado.mk
Library_calc.mk
Library_dbase.mk
Library_dbpool2.mk
Library_dbtools.mk
Library_evoab.mk
Library_file.mk
Library_firebird_sdbc.mk
Library_flat.mk
Library_hsqldb.mk
Library_jdbc.mk
Library_macab1.mk
Library_macabdrv1.mk
Library_mozbootstrap.mk
Library_mysql_jdbc.mk
Library_mysqlc.mk
Library_odbc.mk
Library_postgresql-sdbc-impl.mk
Library_postgresql-sdbc.mk
Library_sdbc2.mk
Library_writer.mk
Makefile
Module_connectivity.mk
Package_postgresql-sdbc.mk
Rdb_postgresql-sdbc.mk
README.md

Database Connectivity

Contains database pieces, drivers, etc.

dbaccess builds UI on top of this.

Testing

PostgreSQL

For testing, use:

podman pull postgres:latest
podman run --name=postgres -e POSTGRES_PASSWORD=foobarbaz -p 127.0.0.1:5432:5432 postgres:latest

In Base, Connect to an existing database, select PostgreSQL:

URL: host=127.0.0.1 port=5432 dbname=postgres
User: postgres
Password: foobarbaz

podman stop postgres
podman rm postgres

In order to test SCRAM authentication, create the container like this:

podman run --name=postgres -e POSTGRES_PASSWORD=foobarbaz -e POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256 -e POSTGRES_HOST_AUTH_METHOD=scram-sha-256 -p 127.0.0.1:5432:5432 postgres:latest

MySQL

For mysql_test:

  • The CppunitTest_mysql_test unit test can be used to test the mysqlc library with any versions of mysql or mariadb server of your choice.

  • This test does not run automatically. It can be triggered with setting the environment variable "CONNECTIVITY_TEST_MYSQL_DRIVER".

  • The environment variable should contain a URL of the following format: [user]/[passwd]@sdbc:mysql:mysqlc:[host]:[port]/db_name

  • tl;dr:

    podman pull mariadb/server
    podman run --name=mariadb -e MYSQL_ROOT_PASSWORD=foobarbaz -p 127.0.0.1:3306:3306 mariadb/server
    podman exec -it mariadb /bin/bash -c "echo -e CREATE DATABASE test | /usr/bin/mysql -u root"
    (cd connectivity && make -srj8 CppunitTest_connectivity_mysql_test CONNECTIVITY_TEST_MYSQL_DRIVER="root/foobarbaz@sdbc:mysql:mysqlc:127.0.0.1:3306/test")
    podman stop mariadb
    podman rm mariadb

Firebird

Firebird has two primary file types:

  • Databases - FDB files. These are version-specific, platform-specific, optimized for performance, and thus incompatible between versions. These are what those comments are about. Initially, when FB integration was considered, these files were evaluated for ODBs, but were rejected because of the said incompatibility - even when the version is the same, it will differ on big endian architecture and little endian one. The problem discussed in those comments is when people open stand-alone FDBs that are shipped e.g. with FB installation itself, not when people open ODBs.

  • Database backups - FBKs. These are what we use inside ODBs. These are designed to be compatible, independent of architecture; and later versions of FB are always able to open FBKs created in older FB versions.

Our embedded FB is used like this:

  • FBK is extracted from ODB;
  • Embedded FB extracts the compatible FBK into an incompatible FDB (specific to this version of embedded FB DLL);
  • FB works with this temporary FDB;
  • When saving ODB, embedded FB backups the FDB into FBK again, and that is stored inside the ODB.

It, indeed, creates additional performance penalty, but makes the ODB readable by all the future LO versions, no matter what future FB version they embed.