Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Queries SET DateStyle='ISO'; appeared in every transaction after migration to pg 14 #776

Closed
zurikus opened this issue Nov 10, 2022 · 11 comments · Fixed by #879
Closed

Queries SET DateStyle='ISO'; appeared in every transaction after migration to pg 14 #776

zurikus opened this issue Nov 10, 2022 · 11 comments · Fixed by #879
Labels
support more of a usage question, not really asking for a code change

Comments

@zurikus
Copy link

zurikus commented Nov 10, 2022

Hi, I'm not sure if I'm opening discussion in correct place, but I will really appreciate any help, advice or guidance.

We are using pgbouncer in transaction pooling mode in our setup and it's looking like following : app ---> pgbouncer ---> Postgres.
Postgres and pgbouncer are running on same server on Rocky OS.

Applications are using PostgreSQL JDBC Driver 42.2.24 or 42.3.3 mainly.
Pgbouncer package is used 1.16.1-10.rhel8.
And Postgres was migrated from 12 version to 14 version.

After Migration to Postgres 14 we are starting to observe queries: SET DateStyle='ISO'; on Postgres side.
So, because of this situation we are getting additional Query calls to our Postgres 14 cluster from pgbouncer side.

Can you please tell us if it is intended to be so? On Postgres 12 we didn't monitor such Queries.
So, after migration to Postgres 14 version nothing was changed on pgbouncer configuration side. Non default parameters that we are using are:

[databases]
* = host=127.0.0.1


[pgbouncer]
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid
listen_addr = *
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
admin_users = pgbouncer
stats_users = pgbouncer,okagent
pool_mode = transaction
server_reset_query = DISCARD ALL
server_connect_timeout = 300
ignore_startup_parameters = extra_float_digits
max_client_conn = 10000
default_pool_size = 10
query_wait_timeout = 300
log_connections = 0
log_disconnections = 0

DateStyle parameter on Postgres side after migration was not changed as well and it is:

$ psql
psql (14.5)
Type "help" for help.

13:50:42 [postgres] # show datestyle;
 DateStyle
-----------
 ISO, MDY
(1 row)

I was trying to use datestyle parameter in pgbouncer.ini file explicitly

[databases]
* = host=127.0.0.1 datestyle='ISO, MDY'

but this didn't changed anything.

Also I was trying to upgrade pgbouncer to 1.17.0-10.rhel8, this didn't worked either. Query SET DateStyle='ISO'; remains.

With verbose=2 parameter in pgbouncer.ini we are able to see records like these in the pgbouncer.log:

2022-11-09 16:24:05.811 MSK [2997433] DEBUG S-0x563a4975b8d0: dbuser/dbname@127.0.0.1:5432 varcache_apply: SET DateStyle='ISO';

On database side logs it's looking like so:

2022-11-09 14:53:01.199 UTC,"dbuser","dbname",3182464,"127.0.0.1:19074",636bb713.308f80,748,"SET",2022-11-09 14:20:03 UTC,14/0,0,LOG,00000,"duration: 0.090 ms  statement: SET DateStyle='ISO';",,,,,,,,,"PostgreSQL JDBC Driver","client backend",,-7713842022241034850

Just in case this is also matter pg_stat_statements extension is used.
After postgres upgrade from version 12 to 14 it's updated from 1.6 to 1.9.

@eulerto
Copy link
Member

eulerto commented Jan 11, 2023

Can you please tell us if it is intended to be so? On Postgres 12 we didn't monitor such Queries.

That's because client parameters diverge from server parameters. In this case, the JDBC driver set DateStyle:

https://github.com/pgjdbc/pgjdbc/blob/ec0ff893ebd0390bd9af38a9a1e67b606df79503/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java#L373-L380

but Postgres has DateStyle = 'ISO, MDY' as you said.

PgBouncer applies a new setting to use what client provides.

pgbouncer/src/varcache.c

Lines 117 to 144 in cffa192

bool varcache_apply(PgSocket *server, PgSocket *client, bool *changes_p)
{
int changes = 0;
struct PStr *cval, *sval;
const struct var_lookup *lk;
int sql_ofs;
struct PktBuf *pkt = pktbuf_temp();
pktbuf_start_packet(pkt, 'Q');
/* grab query position inside pkt */
sql_ofs = pktbuf_written(pkt);
for (lk = lookup; lk->name; lk++) {
sval = get_value(&server->vars, lk);
cval = get_value(&client->vars, lk);
changes += apply_var(pkt, lk->name, cval, sval);
}
*changes_p = changes > 0;
if (!changes)
return true;
pktbuf_put_char(pkt, 0);
pktbuf_finish_packet(pkt);
slog_debug(server, "varcache_apply: %s", pkt->buf + sql_ofs);
return pktbuf_send_immediate(pkt, server);
}

@eulerto eulerto added the support more of a usage question, not really asking for a code change label Jan 11, 2023
@zurikus
Copy link
Author

zurikus commented Jan 12, 2023

Hi, thank you for your response.
Yes, looks like client is setting ISO DateStyle by default, but it was no problem with postgresql 12.
pgjdbc/pgjdbc#1081

Also, why this query present even if we are setting datestyle in pgbouncer.ini file explicitly?

[databases]
* = host=127.0.0.1 datestyle='ISO, MDY'

@shirolimit
Copy link

shirolimit commented Apr 5, 2023

I'm facing the same problem with PG 12. Here is what happens in my setup.

I set the parameter to ISO in [databases] config:

test = host=host.docker.internal port=15432 dbname=test datestyle='ISO' pool_size=2 min_pool_size=2 max_db_connections=2

I see that it is indeed used in pgbouncer logs:

2023-04-05 10:30:35.183 UTC [12] DEBUG parse_ini_file: [databases]
2023-04-05 10:30:35.183 UTC [12] DEBUG parse_ini_file: 'test' = 'host=host.docker.internal port=15432 dbname=test datestyle='ISO' pool_size=2 min_pool_size=2 max_db_connections=2'
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "host"="host.docker.internal"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "port"="15432"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "dbname"="test"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "datestyle"="ISO"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "pool_size"="2"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "min_pool_size"="2"
2023-04-05 10:30:35.183 UTC [12] NOISE cstr_get_pair: "max_db_connections"="2"

When pgbouncer creates new server connection it tries to set datestyle to ISO via starup packet, but postgresql answers with the value ISO, MDY:

2023-04-05 10:31:42.258 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='R', len=9
2023-04-05 10:31:42.258 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 calling login_answer
2023-04-05 10:31:42.258 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 S: auth ok
2023-04-05 10:31:42.258 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='S', len=23
2023-04-05 10:31:42.258 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 S: param: application_name =
2023-04-05 10:31:42.258 UTC [12] DEBUG pktbuf_dynamic(128): 0xffffa0721b10
2023-04-05 10:31:42.258 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='S', len=26
2023-04-05 10:31:42.258 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 S: param: client_encoding = UTF8
2023-04-05 10:31:42.258 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='S', len=24
2023-04-05 10:31:42.258 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 S: param: DateStyle = ISO, MDY

So, when new JDBC client comes with only ISO in startup packet, pgbouncer sees the difference and tries to set it:

2023-04-05 10:31:42.285 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 varcache_apply: SET DateStyle='ISO';SET TimeZone='Europe/Belgrade';SET application_name='PostgreSQL JDBC Driver';

In fact it gets ISO, MDY back from server:

2023-04-05 10:31:42.287 UTC [12] DEBUG S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 S: param: DateStyle = ISO, MDY
2023-04-05 10:31:42.287 UTC [12] DEBUG C-0xffffa012a4b0: test/postgres@127.0.0.1:50826 setting client var: DateStyle='ISO, MDY'
2023-04-05 10:31:42.287 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='C', len=9
2023-04-05 10:31:42.287 UTC [12] NOISE S-0xffffa00f00a0: test/postgres@192.168.65.2:15432 read pkt='S', len=30

I'm not 100% sure where this behaviour should be fixed. It seems that postgresql works correctly here. JDBC driver also expects to get ISO, MDY in the response. 🤔

Options:

  • pgbouncer can use strncasecmp (or something similar) to only check prefix for DateStyle parameter.
  • JDBC driver can provide full DateStyle on startup (e.g. ISO, MDY).

@zurikus
Copy link
Author

zurikus commented Apr 21, 2023

IMHO, first option

pgbouncer can use strncasecmp (or something similar) to only check prefix for DateStyle parameter.

provided by @shirolimit is the right one.

There could be several different formats of DateStyle in ISO format (DMY, MDY, or YMD).
https://www.postgresql.org/docs/current/runtime-config-client.html#GUC-DATESTYLE

Don't think it's the right direction to hardcode all those variations on JDBC driver level.

I do not know why, but the problem also is, that pgbouncer is setting this 'ISO' DateStyle even if we are overriding it in configuration in [database] section.

[databases]
* = host=127.0.0.1 datestyle='ISO, MDY'
dbname = host=127.0.0.1 datestyle='ISO, MDY' pool_size=10

Output from pgbouncer admin console:

10:05:28 [pgbouncer] # show DateStyle;
 datestyle
-----------
 ISO
(1 row)

@vesvalo
Copy link

vesvalo commented Jun 30, 2023

Postgres 12 sends 'DateStyle.ISO, MDY' in the reply to the command SET DateStyle='ISO'.
Postgres 15 doesn't send string like this in replies. Maybe this new behaviour breaks the varcache logic and apply_var() returns 1 every time.

@vesvalo
Copy link

vesvalo commented Jul 3, 2023

Confirmed - postgres 14 and newer don't send ParameterStatus messages in reply to the command SET DateStyle='ISO':

Frame 134: 131 bytes on wire (1048 bits), 131 bytes captured (1048 bits) on interface any, id 0
...
Transmission Control Protocol, Src Port: 46694, Dst Port: 5432, Seq: 878, Ack: 1049, Len: 63
PostgreSQL
    Type: Parse
    Length: 27
    Statement:
    Query: SET DateStyle='ISO'
    Parameters: 0
PostgreSQL
    Type: Bind
    Length: 12
    Portal:
    Statement:
    Parameter formats: 0
    Parameter values: 0
    Result formats: 0
PostgreSQL
    Type: Describe
    Length: 6
    Portal:
PostgreSQL
    Type: Execute
    Length: 9
    Portal:
    Returns: 200 rows
PostgreSQL
    Type: Sync
    Length: 4

Frame 136: 98 bytes on wire (784 bits), 98 bytes captured (784 bits) on interface any, id 0
...
Transmission Control Protocol, Src Port: 5432, Dst Port: 46694, Seq: 1049, Ack: 941, Len: 30
PostgreSQL
    Type: Parse completion
    Length: 4
PostgreSQL
    Type: Bind completion
    Length: 4
PostgreSQL
    Type: No data
    Length: 4
PostgreSQL
    Type: Command completion
    Length: 8
    Tag: SET
PostgreSQL
    Type: Ready for query
    Length: 5
    Status: Idle (73)

This leaves client's varcache not being updated with the actual value of the DateStyle parameter after this command, and therefore client's varcache DateStyle ('ISO') value stays different with the server's varcache DateStyle value ('ISO, MDY') which leads to varcache_apply calls with set DateStyle='ISO' for every client's query.

@JelteF
Copy link
Member

JelteF commented Jul 3, 2023

I do not know why, but the problem also is, that pgbouncer is setting this 'ISO' DateStyle even if we are overriding it in configuration in [database] section.

[databases]
* = host=127.0.0.1 datestyle='ISO, MDY'
dbname = host=127.0.0.1 datestyle='ISO, MDY' pool_size=10

Output from pgbouncer admin console:

10:05:28 [pgbouncer] # show DateStyle;
 datestyle
-----------
 ISO
(1 row)

The datestyle in the admin console is faked. It's hardcoded to ISO:
https://github.com/pgbouncer/pgbouncer/blob/master/src/admin.c#L160-L176

It's a completely different codepath than regular forwarding of configuration parameters.

@JelteF
Copy link
Member

JelteF commented Jul 3, 2023

This leaves client's varcache not being updated with the actual value of the DateStyle parameter after this command, and therefore client's varcache DateStyle ('ISO') value stays different with the server's varcache DateStyle value ('ISO, MDY') which leads to varcache_apply calls with set DateStyle='ISO' for every client's query.

Hmmm, yeah. My guess is that is a side effect of this postgres commit. Postgres now won't report changes when a variable did not change at the end of a query: postgres/postgres@2432b1a

JelteF added a commit to JelteF/pgbouncer that referenced this issue Jul 3, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
@JelteF
Copy link
Member

JelteF commented Jul 3, 2023

A fix for this can be found in #879

Still it's better to actually have JDBC send DateStyle='ISO, MDY' too. Because it will still send a single SET DateStyle='ISO' per client connection (before the first transaction it does). But #879 does fix the problem where this SET command would be sent for every transaction.

JelteF added a commit to JelteF/pgjdbc that referenced this issue Jul 3, 2023
This makes caching variable caching with PgBouncer more efficient, because now the client is setting the same values that the server reports.

See these PgBouncer issues/PRs for details:
pgbouncer/pgbouncer#776
pgbouncer/pgbouncer#879
JelteF added a commit to JelteF/pgbouncer that referenced this issue Jul 3, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
davecramer pushed a commit to pgjdbc/pgjdbc that referenced this issue Jul 4, 2023
This makes caching variable caching with PgBouncer more efficient, because now the client is setting the same values that the server reports.

See these PgBouncer issues/PRs for details:
pgbouncer/pgbouncer#776
pgbouncer/pgbouncer#879
JelteF added a commit to JelteF/pgbouncer that referenced this issue Jul 4, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
JelteF added a commit to JelteF/pgbouncer that referenced this issue Jul 27, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
@zurikus
Copy link
Author

zurikus commented Jul 28, 2023

Thank you very much!
Waiting for these fixes to appear in next releases.

@zurikus zurikus closed this as completed Jul 28, 2023
@JelteF
Copy link
Member

JelteF commented Jul 28, 2023

Re-opening this until #879 is merged

@JelteF JelteF reopened this Jul 28, 2023
JelteF added a commit to JelteF/pgbouncer that referenced this issue Aug 10, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
JelteF added a commit to JelteF/pgbouncer that referenced this issue Aug 10, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
JelteF added a commit to JelteF/pgbouncer that referenced this issue Aug 16, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes pgbouncer#776
benkard pushed a commit to benkard/mulkcms2 that referenced this issue Dec 2, 2023
This MR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [flow-bin](https://github.com/flowtype/flow-bin) ([changelog](https://github.com/facebook/flow/blob/master/Changelog.md)) | devDependencies | minor | [`^0.220.0` -> `^0.222.0`](https://renovatebot.com/diffs/npm/flow-bin/0.220.0/0.222.0) |
| [org.postgresql:postgresql](https://jdbc.postgresql.org) ([source](https://github.com/pgjdbc/pgjdbc)) | build | minor | `42.6.0` -> `42.7.0` |
| [org.liquibase.ext:liquibase-hibernate5](https://github.com/liquibase/liquibase-hibernate/wiki) ([source](https://github.com/liquibase/liquibase-hibernate)) | build | minor | `4.24.0` -> `4.25.0` |
| [org.liquibase:liquibase-maven-plugin](http://www.liquibase.org/liquibase-maven-plugin) ([source](https://github.com/liquibase/liquibase)) | build | minor | `4.24.0` -> `4.25.0` |
| [org.jsoup:jsoup](https://jsoup.org/) ([source](https://github.com/jhy/jsoup)) | compile | minor | `1.16.2` -> `1.17.1` |
| [io.hypersistence:hypersistence-utils-hibernate-62](https://github.com/vladmihalcea/hypersistence-utils) | compile | patch | `3.6.0` -> `3.6.1` |
| [org.hibernate.orm:hibernate-envers](https://hibernate.org/orm) ([source](https://github.com/hibernate/hibernate-orm)) | build | minor | `6.3.1.Final` -> `6.4.0.Final` |
| [org.hibernate.orm:hibernate-core](https://hibernate.org/orm) ([source](https://github.com/hibernate/hibernate-orm)) | build | minor | `6.3.1.Final` -> `6.4.0.Final` |
| [com.blazebit:blaze-persistence-bom](https://persistence.blazebit.com) ([source](https://github.com/Blazebit/blaze-persistence)) | import | patch | `1.6.9` -> `1.6.10` |
| [com.diffplug.spotless:spotless-maven-plugin](https://github.com/diffplug/spotless) | build | minor | `2.40.0` -> `2.41.0` |
| [io.quarkus:quarkus-maven-plugin](https://github.com/quarkusio/quarkus) | build | minor | `3.5.1` -> `3.6.0` |
| [io.quarkus:quarkus-universe-bom](https://github.com/quarkusio/quarkus-platform) | import | patch | `3.5.1` -> `3.5.3` |

---

### Release Notes

<details>
<summary>flowtype/flow-bin</summary>

### [`v0.222.0`](flow/flow-bin@543cad7...84a68f1)

[Compare Source](flow/flow-bin@543cad7...84a68f1)

### [`v0.221.0`](flow/flow-bin@e8b3a2e...543cad7)

[Compare Source](flow/flow-bin@e8b3a2e...543cad7)

### [`v0.220.1`](flow/flow-bin@030bfc6...e8b3a2e)

[Compare Source](flow/flow-bin@030bfc6...e8b3a2e)

</details>

<details>
<summary>pgjdbc/pgjdbc</summary>

### [`v42.7.0`](https://github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#&#8203;4270-2023-11-20-093300--0500)

##### Changed

-   fix: Deprecate for removal PGPoint.setLocation(java.awt.Point) to cut dependency to `java.desktop` module. [MR #&#8203;2967](pgjdbc/pgjdbc#2967)
-   feat: return all catalogs for getCatalogs metadata query closes [ISSUE #&#8203;2949](pgjdbc/pgjdbc#2949) [MR #&#8203;2953](pgjdbc/pgjdbc#2953)
-   feat: support SET statements combining with other queries with semicolon in PreparedStatement [MR ##&#8203;2973](pgjdbc/pgjdbc#2973)

##### Fixed

-   chore: add styleCheck Gradle task to report style violations [MR #&#8203;2980](pgjdbc/pgjdbc#2980)
-   fix: Include currentXid in "Error rolling back prepared transaction" exception message [MR #&#8203;2978](pgjdbc/pgjdbc#2978)
-   fix: add varbit as a basic type inside the TypeInfoCache [MR #&#8203;2960](pgjdbc/pgjdbc#2960)
-   fix: Fix failing tests for version 16.  [MR #&#8203;2962](pgjdbc/pgjdbc#2962)
-   fix: allow setting arrays with ANSI type name [MR #&#8203;2952](pgjdbc/pgjdbc#2952)
-   feat: Use KeepAlive to confirm LSNs [MR #&#8203;2941](pgjdbc/pgjdbc#2941)
-   fix: put double ' around log parameter [MR #&#8203;2936](pgjdbc/pgjdbc#2936) fixes [ISSUE #&#8203;2935](pgjdbc/pgjdbc#2935)
-   fix: Fix Issue [#&#8203;2928](pgjdbc/pgjdbc#2928) number of ports not equal to number of servers in datasource [MR #&#8203;2929](pgjdbc/pgjdbc#2929)
-   fix: Use canonical DateStyle name ([#&#8203;2925](pgjdbc/pgjdbc#2925)) fixes [pgbouncer issue](pgbouncer/pgbouncer#776)
-   fix: Method getFastLong should be able to parse all longs [MR #&#8203;2881](pgjdbc/pgjdbc#2881)
-   docs: Fix typos in info.html [MR #&#8203;2860](pgjdbc/pgjdbc#2860)
-   fix: Return correct default from PgDatabaseMetaData.getDefaultTransactionIsolation [MR #&#8203;2992](pgjdbc/pgjdbc#2992) fixes [Issue #&#8203;2991](pgjdbc/pgjdbc#2991)
-   test: fix assertion in RefCursorFetchTestultFetchSize rows
-   test: use try-with-resources in LogicalReplicationStatusTest

</details>

<details>
<summary>liquibase/liquibase-hibernate</summary>

### [`v4.25.0`](https://github.com/liquibase/liquibase-hibernate/releases/tag/v4.25.0): Support for Liquibase Hibernate 6 Extension v4.25.0

[Compare Source](liquibase/liquibase-hibernate@v4.24.0...v4.25.0)

#### Changes

#### What's Changed

-   DAT-15993 -
liquibase-hibernate using Liquibase Parent POM by [@&#8203;jandroav](https://github.com/jandroav) in liquibase/liquibase-hibernate#587
-   Update README.md by [@&#8203;vivekBoii](https://github.com/vivekBoii) in liquibase/liquibase-hibernate#585
-   Update pom.xml by [@&#8203;jandroav](https://github.com/jandroav) in liquibase/liquibase-hibernate#596
-   chore(deps): bump liquibase/build-logic from 0.4.7 to 0.5.5 by [@&#8203;dependabot](https://github.com/dependabot) in liquibase/liquibase-hibernate#609
-   Fixed a typo in ReadMe by [@&#8203;smty2018](https://github.com/smty2018) in liquibase/liquibase-hibernate#600

#### New Contributors

-   [@&#8203;vivekBoii](https://github.com/vivekBoii) made their first contribution in liquibase/liquibase-hibernate#585
-   [@&#8203;smty2018](https://github.com/smty2018) made their first contribution in liquibase/liquibase-hibernate#600
-   [@&#8203;sayaliM0412](https://github.com/sayaliM0412) made their first contribution in liquibase/liquibase-hibernate#618

**Full Changelog**: liquibase/liquibase-hibernate@v4.24.0...v4.25.0

</details>

<details>
<summary>liquibase/liquibase</summary>

### [`v4.25.0`](https://github.com/liquibase/liquibase/blob/HEAD/changelog.txt#Liquibase-4250-is-a-major-release)

[Compare Source](liquibase/liquibase@v4.24.0...v4.25.0)

</details>

<details>
<summary>vladmihalcea/hypersistence-utils</summary>

### [`v3.6.1`](https://github.com/vladmihalcea/hypersistence-utils/blob/HEAD/changelog.txt#Version-361---November-11-2023)

\================================================================================

Export the testing mechanism [#&#8203;676](vladmihalcea/hypersistence-utils#676)

</details>

<details>
<summary>hibernate/hibernate-orm</summary>

### [`v6.4.0.Final`](https://github.com/hibernate/hibernate-orm/blob/HEAD/changelog.txt#Changes-in-640Final-November-23-2023)

[Compare Source](hibernate/hibernate-orm@6.3.2...6.4.0)

https://hibernate.atlassian.net/projects/HHH/versions/32212

\*\* Bug
\* \[HHH-17454] - SemanticException caused by type check when comparing generic path to parameter expression
\* \[HHH-17428] - Parameter place holder should start from 1 in StandardTemporaryTableExporter
\* \[HHH-17415] - NullPointerException: EntityValuedPathInterpretation - getNavigablePath()
\* \[HHH-17412] - Type comparison error due to surprising javac method selection
\* \[HHH-17411] - Fetch join on treated join leads to owner not selected error
\* \[HHH-17386] - Type inference source is not reset for top level predicates
\* \[HHH-17384] - OneToMany association with [@&#8203;NotFound](https://github.com/NotFound) results in SQL with different JOIN-type for SELECT (LEFT JOIN) and COUNT (JOIN)
\* \[HHH-17383] - Association is null in lazy initialized element collection
\* \[HHH-17382] - Dynamic instantiation leads to superclass fields not found when using injection
\* \[HHH-17381] - fix wrong groupId in Compatibility.adoc
\* \[HHH-17380] - Persisting an entity with a non generated id and [@&#8203;MapsId](https://github.com/MapsId) throws PropertyValueException
\* \[HHH-17370] - ServiceException: Unable to create requested service \[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Cannot invoke "org.hibernate.resource.jdbc.spi.JdbcObserver.jdbcConnectionAcquisitionEnd(java.sql.Connection)" because "this.observer" is null
\* \[HHH-17344] - DB2zDialect NullPointerException
\* \[HHH-17328] - Retrieve entity using entity graph not adding type in the where clause for [@&#8203;Inheritance](https://github.com/Inheritance)(strategy = InheritanceType.SINGLE_TABLE)
\* \[HHH-17313] - Session#setDefaultReadOnly is ignored by named queries
\* \[HHH-17308] - AssertionError when mixing [@&#8203;SQLSelect](https://github.com/SQLSelect) and composite ID
\* \[HHH-17299] - AssertionError in DiscriminatorPathInterpretation when treating a path with the same subtype
\* \[HHH-17294] - Non-Embeddable JSON objects are not marked as dirty when modified
\* \[HHH-17292] - MappedSuperclass with more than 1 subclass level leads to "UnknownPathException: Could not resolve attribute"
\* \[HHH-17102] - [@&#8203;SqlResultSetMapping](https://github.com/SqlResultSetMapping) doesn’t work with [@&#8203;Inheritance](https://github.com/Inheritance)(strategy = InheritanceType.JOINED)

\*\* Deprecation
\* \[HHH-17441] - Deprecate [@&#8203;Comment](https://github.com/Comment)

\*\* Improvement
\* \[HHH-17425] - Introduce new configuration parameters for offline Dialect initialization
\* \[HHH-17424] - Have Dialect manage more of ExtractedDatabaseMetadata
\* \[HHH-17417] - Workaround Oracle driver issue to reduce connection creation
\* \[HHH-17409] - Support offset without limit in AbstractSimpleLimitHandler and Oracle12LimitHandler
\* \[HHH-17389] - Add getQueryHintString() for PostgreSQLDialect
\* \[HHH-17372] - Endless recursion between default implementations of SelectionQuery.getResultStream() and SelectionQuery.stream()
\* \[HHH-17355] - Smoothen rough edges with array functions
\* \[HHH-17340] - Fix typos in javadoc
\* \[HHH-17023] - Add support for Altibase dialect
\* \[HHH-15074] - Allow partial composite id generation for EmbeddedId

\*\* New Feature
\* \[HHH-17357] - Support pgvector types and functions
\* \[HHH-17210] - Expose custom JFR events

\*\* Sub-task
\* \[HHH-17347] - Support for JDK which do not support JFR events

\*\* Task
\* \[HHH-17390] - Change scope of AbstyractEntityInitializer#resolveInstance
\* \[HHH-17367] - Add links to tutorials in documentation
\* \[HHH-17362] - Define dependencies of hibernate-jpamodelgen as api
\* \[HHH-17350] - Work on hibernate-models, XSD and JAXB

### [`v6.3.2.Final`](hibernate/hibernate-orm@6.3.1...6.3.2)

[Compare Source](hibernate/hibernate-orm@6.3.1...6.3.2)

</details>

<details>
<summary>Blazebit/blaze-persistence</summary>

### [`v1.6.10`](https://github.com/Blazebit/blaze-persistence/blob/HEAD/CHANGELOG.md#&#8203;1610)

[Compare Source](Blazebit/blaze-persistence@1.6.9...1.6.10)

12/11/2023 - [Release tag](https://github.com/Blazebit/blaze-persistence/releases/tag/1.6.10) [Resolved issues](https://github.com/Blazebit/blaze-persistence/issues?q=is%3Aissue+milestone%3A1.6.10+is%3Aclosed+sort%3Aupdated-desc)

##### New features

-   Support JDK 21
-   Add CockroachDB function registrations
-   Support Hibernate 6.3 and 6.4
-   Special case limit 1 in correlation builders to support old MySQL and MariaDB versions

##### Bug fixes

-   Fix parsing error for entity view limit mapping
-   Fix dropping of embeddable group by expression when nested property has same name as parent property
-   Fix SQL generation for lateral subqueries when correlated path has `@Where` predicate
-   Fix `ConcurrentModificationException` during metamodel determination for special Hibernate Envers mappings
-   Clear `EntityViewManager` static fields in entity view implementations to avoid possible memory leak
-   Ignore `@Any` mapped attributes in enum type scanning
-   Fix NPE caused by wrong order by expression during criteria builder copying
-   Workaround Hibernate 6 returning null java type for enum parameters
-   Add Entity View type test values for more Java types

##### Backwards-incompatible changes

None yet

</details>

<details>
<summary>diffplug/spotless</summary>

### [`v2.41.0`](https://github.com/diffplug/spotless/blob/HEAD/CHANGES.md#&#8203;2410---2023-08-29)

##### Added

-   Add a `jsonPatch` step to `json` formatter configurations. This allows patching of JSON documents using [JSON Patches](https://jsonpatch.com). ([#&#8203;1753](diffplug/spotless#1753))
-   Support GJF own import order. ([#&#8203;1780](diffplug/spotless#1780))

##### Fixed

-   Use latest versions of popular style guides for `eslint` tests to fix failing `useEslintXoStandardRules` test. ([#&#8203;1761](diffplug/spotless#1761), [#&#8203;1756](diffplug/spotless#1756))
-   Add support for `prettier` version `3.0.0` and newer. ([#&#8203;1760](diffplug/spotless#1760), [#&#8203;1751](diffplug/spotless#1751))
-   Fix npm install calls when npm cache is not up-to-date. ([#&#8203;1760](diffplug/spotless#1760), [#&#8203;1750](diffplug/spotless#1750))

##### Changes

-   Bump default `eslint` version to latest `8.31.0` -> `8.45.0` ([#&#8203;1761](diffplug/spotless#1761))
-   Bump default `prettier` version to latest (v2) `2.8.1` -> `2.8.8`. ([#&#8203;1760](diffplug/spotless#1760))
-   Bump default `greclipse` version to latest `4.27` -> `4.28`. ([#&#8203;1775](diffplug/spotless#1775))

</details>

<details>
<summary>quarkusio/quarkus</summary>

### [`v3.6.0`](quarkusio/quarkus@3.5.3...3.6.0)

[Compare Source](quarkusio/quarkus@3.5.3...3.6.0)

### [`v3.5.3`](https://github.com/quarkusio/quarkus/releases/tag/3.5.3)

[Compare Source](quarkusio/quarkus@3.5.2...3.5.3)

##### Complete changelog

-   [#&#8203;37215](quarkusio/quarkus#37215) - Use LinkedHashMap for parts map to ensure user input order
-   [#&#8203;37214](quarkusio/quarkus#37214) - MultipartFormDataOutput should use an ordered map instead of a HashMap
-   [#&#8203;37210](quarkusio/quarkus#37210) - \[3.5] Fix and adjust Quarkiverse extension template
-   [#&#8203;37209](quarkusio/quarkus#37209) - Build cache - Additional tweaks
-   [#&#8203;37206](quarkusio/quarkus#37206) - recognize quarkus.tls.trust-all property by keycloak-admin-client extension
-   [#&#8203;37174](quarkusio/quarkus#37174) - Ignore files coming from quarkus-ide-launcher jar
-   [#&#8203;37130](quarkusio/quarkus#37130) - Do not report unused deprecated runtime props with default value as used
-   [#&#8203;37102](quarkusio/quarkus#37102) - Fix filter per extension in dev ui
-   [#&#8203;37073](quarkusio/quarkus#37073) - Use 3.2 as the example stream for update-quarkus.adoc
-   [#&#8203;37072](quarkusio/quarkus#37072) - Deprecated runtime configuration properties with default value are reported even though never used
-   [#&#8203;37046](quarkusio/quarkus#37046) - Adjust Quarkiverse Antora doc templates a bit
-   [#&#8203;36961](quarkusio/quarkus#36961) - Fix GraphQL WebSocket handling occurring before authorization

### [`v3.5.2`](https://github.com/quarkusio/quarkus/releases/tag/3.5.2)

[Compare Source](quarkusio/quarkus@3.5.1...3.5.2)

##### Complete changelog

-   [#&#8203;37120](quarkusio/quarkus#37120) - Bump Smallrye RM from 4.10.1 to 4.10.2
-   [#&#8203;37104](quarkusio/quarkus#37104) - Make analytics tests more a bit more resilient
-   [#&#8203;37090](quarkusio/quarkus#37090) - Add the actual coordinates of the MySQL driver
-   [#&#8203;37070](quarkusio/quarkus#37070) - Security doc fix: Broken link and bad code snippet
-   [#&#8203;37069](quarkusio/quarkus#37069) - Tiny tweaks based on QE feedback for Datasource guide
-   [#&#8203;37068](quarkusio/quarkus#37068) - Updates infinispan client intelligence section
-   [#&#8203;37058](quarkusio/quarkus#37058) - Bump com.fasterxml.jackson:jackson-bom from 2.15.2 to 2.15.3
-   [#&#8203;37055](quarkusio/quarkus#37055) - Bump io.smallrye.config:smallrye-config-source-yaml from 3.4.1 to 3.4.4 in /devtools/gradle
-   [#&#8203;37038](quarkusio/quarkus#37038) - Disable CustomManifestArgumentsTest on Windows
-   [#&#8203;37032](quarkusio/quarkus#37032) - OpenAPI make sure basic auth auto detection work
-   [#&#8203;37028](quarkusio/quarkus#37028) - Fix typos in reactive-sql-clients.adoc
-   [#&#8203;37025](quarkusio/quarkus#37025) - Document how to log authentication failures for RESTEasy Reactive users migrating from the RESTEasy Classic
-   [#&#8203;37019](quarkusio/quarkus#37019) - Address CVE-2023-21971 present in MySQL connector
-   [#&#8203;37018](quarkusio/quarkus#37018) - Address CVE-2023-21971 present in MySQL connector
-   [#&#8203;37015](quarkusio/quarkus#37015) - Bump org.eclipse.parsson:parsson from 1.1.4 to 1.1.5
-   [#&#8203;37010](quarkusio/quarkus#37010) - Fix vale errors and some warnings in the OIDC Configuration Properties reference guide
-   [#&#8203;37006](quarkusio/quarkus#37006) - Never register server specific providers in REST Client (fixed)
-   [#&#8203;37003](quarkusio/quarkus#37003) - Small adjustments for documentation related content
-   [#&#8203;37001](quarkusio/quarkus#37001) - Revert "Unblock SmallRye Health exposed routes"
-   [#&#8203;36991](quarkusio/quarkus#36991) - Upgrade es-module-shims to 1.8.1
-   [#&#8203;36985](quarkusio/quarkus#36985) - Generate a file with relations between guides
-   [#&#8203;36983](quarkusio/quarkus#36983) - Fix discarded ObjectMapper configuration
-   [#&#8203;36981](quarkusio/quarkus#36981) - Updates to Infinispan 14.0.20.Final
-   [#&#8203;36968](quarkusio/quarkus#36968) - Send host.name in all spans
-   [#&#8203;36953](quarkusio/quarkus#36953) - Workaround quarkusio/quarkus#36952 alias jboss/jboss-parent-pom#236 jboss-parent:40 still manages jdk-misc, but does not define version.jdk-misc anymore
-   [#&#8203;36942](quarkusio/quarkus#36942) - Option TraceServiceLoaderFeature removed in GraalVM 23.1
-   [#&#8203;36941](quarkusio/quarkus#36941) - Fix OTel Resource Attributes
-   [#&#8203;36924](quarkusio/quarkus#36924) - Add keywords and topics for hibernate-search-orm-elasticsearch.adoc
-   [#&#8203;36917](quarkusio/quarkus#36917) - Update SmallRye Config to 3.4.4
-   [#&#8203;36914](quarkusio/quarkus#36914) - Reset databases/users for each Hibernate ORM tenancy test module
-   [#&#8203;36912](quarkusio/quarkus#36912) - Avoid `@TempDir` in RestClientCDIDelegateBuilderTest
-   [#&#8203;36884](quarkusio/quarkus#36884) - SmallRye Config property mapping mismatches from the property name in the generated config documentation
-   [#&#8203;36868](quarkusio/quarkus#36868) - Native binary generated using quarkus, graalvm and picocli trying to read from .env folder in working directory
-   [#&#8203;36856](quarkusio/quarkus#36856) - Lowercase env vars with hyphens are no picked up anymore in Quarkus 3.5.0 (e.g. in docker compose or Hashicorp Nomad)
-   [#&#8203;36850](quarkusio/quarkus#36850) - ObjectMapper configuration is discarded in resteasy-reactive-jackson's JsonFactory
-   [#&#8203;36847](quarkusio/quarkus#36847) - SmallRye Config error message suggests strange enum values when a bad value is passed
-   [#&#8203;36753](quarkusio/quarkus#36753) - Fix order of defaults recording
-   [#&#8203;36742](quarkusio/quarkus#36742) - DevUI resource error on main
-   [#&#8203;36711](quarkusio/quarkus#36711) - Disable Http2RSTFloodProtectionTest on Windows
-   [#&#8203;36578](quarkusio/quarkus#36578) - Maven CLI: add startWith matching into recipes detection
-   [#&#8203;36573](quarkusio/quarkus#36573) - Maven CLI: add wildcard matching into recipes detection
-   [#&#8203;36570](quarkusio/quarkus#36570) - Maven CLI: use recipes for platform extensions
-   [#&#8203;36568](quarkusio/quarkus#36568) - Maven CLI: use recipes for platform extensions
-   [#&#8203;36129](quarkusio/quarkus#36129) - auto-service-loader-registration fails with GraalVM CE 21+35.1
-   [#&#8203;32049](quarkusio/quarkus#32049) - resteasy-reactive Interceptors don't get executed after Authorization failure
-   [#&#8203;31024](quarkusio/quarkus#31024) - Resteasy Reactive client tries to use ContainerResponseFilter

</details>

<details>
<summary>quarkusio/quarkus-platform</summary>

### [`v3.5.3`](quarkusio/quarkus-platform@3.5.2...3.5.3)

[Compare Source](quarkusio/quarkus-platform@3.5.2...3.5.3)

### [`v3.5.2`](quarkusio/quarkus-platform@3.5.1...3.5.2)

[Compare Source](quarkusio/quarkus-platform@3.5.1...3.5.2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever MR is behind base branch, or you tick the rebase/retry checkbox.

👻 **Immortal**: This MR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNC4yNC4wIiwidXBkYXRlZEluVmVyIjoiMzQuMjQuMCJ9-->
JelteF added a commit that referenced this issue Dec 30, 2023
Since PG14, Postgres doesn't send ParameterStatus packets anymore when a
setting has not actually changed. This could cause the client varcache
and server varcache to become out of sync. Which then in turn resulted
in unnecessary `SET` commands to be sent to the server.

Fixes #776
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
support more of a usage question, not really asking for a code change
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants