From 4004593d43bdbe2a4379bbc7a7a8a9da20680468 Mon Sep 17 00:00:00 2001 From: Christian Beikov Date: Wed, 1 Oct 2025 10:43:19 +0200 Subject: [PATCH] Update PostgreSQL testing to version 18 --- docker_db.sh | 10 +++++++++- .../community/dialect/PostgreSQLLegacyDialect.java | 8 ++++++++ .../java/org/hibernate/dialect/PostgreSQLDialect.java | 8 ++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docker_db.sh b/docker_db.sh index 7428fa5eb086..e452103cee2c 100755 --- a/docker_db.sh +++ b/docker_db.sh @@ -219,7 +219,7 @@ mariadb_setup() { } postgresql() { - postgresql_17 + postgresql_18 } postgresql_13() { @@ -262,6 +262,14 @@ postgresql_17() { postgresql_setup } +postgresql_18() { + $CONTAINER_CLI rm -f postgres || true + $CONTAINER_CLI run --name postgres -e POSTGRES_USER=hibernate_orm_test -e POSTGRES_PASSWORD=hibernate_orm_test -e POSTGRES_DB=hibernate_orm_test -p5432:5432 --tmpfs /var/lib/postgresql -d ${DB_IMAGE_POSTGRESQL_17:-docker.io/postgis/postgis:18-3.6} \ + -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c shared_buffers=256MB -c maintenance_work_mem=256MB -c max_wal_size=1GB -c checkpoint_timeout=1d + $CONTAINER_CLI exec postgres bash -c '/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y && apt install -y postgresql-18-pgvector' + postgresql_setup +} + postgresql_setup() { databases=() for n in $(seq 1 $DB_COUNT) diff --git a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java index b9b74920d784..793ed2340e88 100644 --- a/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java +++ b/hibernate-community-dialects/src/main/java/org/hibernate/community/dialect/PostgreSQLLegacyDialect.java @@ -613,6 +613,7 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio functionFactory.initcap(); functionFactory.substr(); functionFactory.substring_substr(); + functionFactory.reverse(); //also natively supports ANSI-style substring() functionFactory.translate(); functionFactory.toCharNumberDateTimestamp(); @@ -917,6 +918,13 @@ public boolean supportsCaseInsensitiveLike() { return true; } + @Override + public String generatedAs(String generatedAs) { + return getVersion().isSameOrAfter( 18 ) + ? " generated always as (" + generatedAs + ")" + : super.generatedAs( generatedAs ); + } + @Override public GenerationType getNativeValueGenerationStrategy() { return GenerationType.SEQUENCE; diff --git a/hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLDialect.java b/hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLDialect.java index e2185157b3a5..1f2f7fd38857 100644 --- a/hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLDialect.java +++ b/hibernate-core/src/main/java/org/hibernate/dialect/PostgreSQLDialect.java @@ -574,6 +574,7 @@ public void initializeFunctionRegistry(FunctionContributions functionContributio functionFactory.substr(); functionFactory.substring_substr(); //also natively supports ANSI-style substring() + functionFactory.reverse(); functionFactory.translate(); functionFactory.toCharNumberDateTimestamp(); functionFactory.concat_pipeOperator( "convert_from(lo_get(?1),pg_client_encoding())" ); @@ -897,6 +898,13 @@ public boolean supportsCaseInsensitiveLike() { return true; } + @Override + public String generatedAs(String generatedAs) { + return getVersion().isSameOrAfter( 18 ) + ? " generated always as (" + generatedAs + ")" + : super.generatedAs( generatedAs ); + } + @Override public GenerationType getNativeValueGenerationStrategy() { return GenerationType.SEQUENCE;