HHH-14446 Add spatial integration test profiles for DB2 and HANA

This commit is contained in:
Karel Maesen 2021-02-11 20:13:09 +01:00 committed by Christian Beikov
parent da8cd19968
commit 6d97df6707
3 changed files with 77 additions and 0 deletions

View File

@ -38,6 +38,65 @@ db2() {
docker exec -t db2 su - orm_test bash -c ". /database/config/orm_test/sqllib/db2profile && /database/config/orm_test/sqllib/bin/db2 'connect to orm_test' && /database/config/orm_test/sqllib/bin/db2 'CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY AUTOMATIC STORAGE'" docker exec -t db2 su - orm_test bash -c ". /database/config/orm_test/sqllib/db2profile && /database/config/orm_test/sqllib/bin/db2 'connect to orm_test' && /database/config/orm_test/sqllib/bin/db2 'CREATE USER TEMPORARY TABLESPACE usr_tbsp MANAGED BY AUTOMATIC STORAGE'"
} }
db2_spatial() {
docker rm -f db2spatial || true
temp_dir=$(mktemp -d)
cat <<EOF >${temp_dir}/ewkt.sql
create or replace function db2gse.asewkt(geometry db2gse.st_geometry)
returns clob(2G)
specific db2gse.asewkt1
language sql
deterministic
no external action
reads sql data
return 'srid=' || varchar(db2gse.st_srsid(geometry)) || ';' || db2gse.st_astext(geometry)
;
-- Create SQL function to create a geometry from EWKT format
create or replace function db2gse.geomfromewkt(instring varchar(32000))
returns db2gse.st_geometry
specific db2gse.fromewkt1
language sql
deterministic
no external action
reads sql data
return db2gse.st_geometry(
substr(instring,posstr(instring,';')+1, length(instring) - posstr(instring,';')),
integer(substr(instring,posstr(instring,'=')+1,posstr(instring,';')-(posstr(instring,'=')+1)))
)
;
-- Create a DB2 transform group to return and accept EWKT
CREATE TRANSFORM FOR db2gse.ST_Geometry EWKT (
FROM SQL WITH FUNCTION db2gse.asewkt(db2gse.ST_Geometry),
TO SQL WITH FUNCTION db2gse.geomfromewkt(varchar(32000)) )
;
-- Redefine the default DB2_PROGRAM to return and accept EWKT instead of WKT
DROP TRANSFORM DB2_PROGRAM FOR db2gse.ST_Geometry;
CREATE TRANSFORM FOR db2gse.ST_Geometry DB2_PROGRAM (
FROM SQL WITH FUNCTION db2gse.asewkt(db2gse.ST_Geometry),
TO SQL WITH FUNCTION db2gse.geomfromewkt(varchar(32000)) )
;
EOF
docker run --name db2spatial --privileged -e DB2INSTANCE=orm_test -e DB2INST1_PASSWORD=orm_test -e DBNAME=orm_test -e LICENSE=accept -e AUTOCONFIG=false -e ARCHIVE_LOGS=false -e TO_CREATE_SAMPLEDB=false -e REPODB=false \
-v ${temp_dir}:/conf \
-p 50000:50000 -d ibmcom/db2:11.5.5.0
# Give the container some time to start
OUTPUT=
while [[ $OUTPUT != *"Setup has completed."* ]]; do
echo "Waiting for DB2 to start..."
sleep 10
OUTPUT=$(docker logs db2spatial)
done
sleep 10
echo "Enabling spatial extender"
docker exec -t db2spatial su - orm_test bash -c "/database/config/orm_test/sqllib/db2profile && /database/config/orm_test/sqllib/bin/db2se enable_db orm_test"
echo "Installing required transform group"
docker exec -t db2spatial su - orm_test bash -c "/database/config/orm_test/sqllib/db2profile && /database/config/orm_test/sqllib/bin/db2 'connect to orm_test' && /database/config/orm_test/sqllib/bin/db2 -tvf /conf/ewkt.sql"
}
mssql() { mssql() {
docker rm -f mssql || true docker rm -f mssql || true
docker run --name mssql -d -p 1433:1433 -e "SA_PASSWORD=Hibernate_orm_test" -e ACCEPT_EULA=Y microsoft/mssql-server-linux:2017-CU13 docker run --name mssql -d -p 1433:1433 -e "SA_PASSWORD=Hibernate_orm_test" -e ACCEPT_EULA=Y microsoft/mssql-server-linux:2017-CU13
@ -166,6 +225,8 @@ if [ -z ${1} ]; then
echo -e "\tdb2" echo -e "\tdb2"
echo -e "\tmssql" echo -e "\tmssql"
echo -e "\toracle" echo -e "\toracle"
echo -e "\tpostgis_9_6"
echo -e "\tdb2_spatial"
else else
${1} ${1}
fi fi

View File

@ -170,6 +170,13 @@ ext {
'jdbc.pass' : 'orm_test', 'jdbc.pass' : 'orm_test',
'jdbc.url' : 'jdbc:db2://' + dbHost + ':50000/orm_test' 'jdbc.url' : 'jdbc:db2://' + dbHost + ':50000/orm_test'
], ],
db2_spatial_ci : [
'db.dialect' : 'org.hibernate.spatial.dialect.db2.DB2SpatialDialect',
'jdbc.driver': 'com.ibm.db2.jcc.DB2Driver',
'jdbc.user' : 'orm_test',
'jdbc.pass' : 'orm_test',
'jdbc.url' : 'jdbc:db2://' + dbHost + ':50000/orm_test'
],
hana : [ hana : [
'db.dialect' : 'org.hibernate.dialect.HANAColumnStoreDialect', 'db.dialect' : 'org.hibernate.dialect.HANAColumnStoreDialect',
'jdbc.driver': 'com.sap.db.jdbc.Driver', 'jdbc.driver': 'com.sap.db.jdbc.Driver',
@ -202,6 +209,14 @@ ext {
// Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html
'jdbc.url' : 'jdbc:sap://' + dbHost + ':39017/?statementCacheSize=0' 'jdbc.url' : 'jdbc:sap://' + dbHost + ':39017/?statementCacheSize=0'
], ],
hana_spatial_ci : [
'db.dialect' : 'org.hibernate.spatial.dialect.hana.HANASpatialDialect',
'jdbc.driver': 'com.sap.db.jdbc.Driver',
'jdbc.user' : 'SYSTEM',
'jdbc.pass' : 'H1bernate_test',
// Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html
'jdbc.url' : 'jdbc:sap://' + dbHost + ':39017/?statementCacheSize=0'
],
cockroachdb : [ cockroachdb : [
'db.dialect' : 'org.hibernate.dialect.CockroachDB192Dialect', 'db.dialect' : 'org.hibernate.dialect.CockroachDB192Dialect',
// CockroachDB uses the same pgwire protocol as PostgreSQL, so the driver is the same. // CockroachDB uses the same pgwire protocol as PostgreSQL, so the driver is the same.

View File

@ -28,6 +28,7 @@ public class DB2DatabaseCleaner implements DatabaseCleaner {
+ "'SYSIBMADM'," + "'SYSIBMADM',"
+ "'SYSPUBLIC'," + "'SYSPUBLIC',"
+ "'SYSSTAT'," + "'SYSSTAT',"
+ "'DB2GSE',"
+ "'SYSTOOLS'"; + "'SYSTOOLS'";
private final List<String> ignoredTables = new ArrayList<>(); private final List<String> ignoredTables = new ArrayList<>();