Create temp table query hangs - Mailing list pgsql-admin

From Novak Ivan
Subject Create temp table query hangs
Date
Msg-id F669A04E-CF43-4A07-B4C9-7A210CEAF19E@adcubum.com
Whole thread Raw
Responses Re: Create temp table query hangs  (Ron <ronljohnsonjr@gmail.com>)
Re: Create temp table query hangs  (Tom Lane <tgl@sss.pgh.pa.us>)
postgresql in docker to improve security  ("Nguyen, Long (IM&T, St. Lucia)" <Long.Nguyen@csiro.au>)
List pgsql-admin

Greetings,

 

We’ve a hanging query which creates a temp table.

 

Some context:

  • The application transforms from one data model to another one (to a canonical datamodel). The source tables for these transformations are on one schema of the postgresDB (we call it LandingZone) and the target tables of these transformations are in a different schema of the exact same postgresDB (we call it the CDM schema).

 

Our problem in summary:

  • a query for creating temporary table on target schema is hanging forever and we are out of ideas why.

The query is not generated by our own "mapper" tool that we wrote. We don't use any third party product here (except JOOQ library for communicating to DB)

 

When we try to create a (temporary) table with one statement, and that query takes forever (even after >24h the query is still there). In the Postgres Database we see three identical active PIDs for the same query (with same starttimestamp). But we only sent the statement once to the DB. See screenshot below.

 

The query hangs when creating of temporary tables (see below) and also creating normal tables.

The query hangs using our go-to library for Database queries (JOOQ) and also when we do it manually (we rewrote the implementation using java JDBC) -> so it is not dependent on that library

The query hangs also after updating the default JDBC drivers to newest version (42.2.19)

The query does NOT hang when running on local development environment (not containerized) -> we see 3 PIDs in database (which is strange), but the query finishes after some seconds

The query does NOT hang when running directly on the database using DBeaver, i.e. not using java -> we see 3 PIDs in database (which is strange), but the query finishes after some seconds

This doesn't happen every time we create a table. For source tables that have no new data (or are empty) the query completes. Otherwise it doesn’t seem to be volume dependent (small vs large vs huge volume)

It does consistently happen when creating temp table selecting on specific tables that have some volume.

  

In all environments (ours or clients) the Postgres DB are on own VM and not containerized.

On local dev environment (noncontainerized) the query does not hang. It only hangs when using a container environment (local docker or openshift)

 

The process of a delta load is as follows (for each source/target table combination):

1) get max "lastupdate" timestamp from target table

2) delete data on target that has been replaced (i.e. data that was marked for deletion since "lastupdate")

3) create temporary_table with new data from the source table (new means greater than "lastupdate"; this is defined in the subselect)

4) insert into target table as select * from temporary_table

 

The query on step3 is the one that hangs

 

Content of the query:

The "create table as select from" has a small to large resultset (can be 0 or millions of rows). The select statement has 2 joins with the same table (a code table to resolve some code values for later WHERE clauses) and an additional condition in the WHERE clause with a subselect inside (the subselect selects from the same table as the parent select. It checks if this record is in a list of "to be updated" records. i.e. for a "delta" load).

 

Postgres version: PostgreSQL 12.6 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5), 64-bit

Postgres JDBC driver version: 42.2.19

Java version: 11.0.9.1

 

  • All those parameters are the same whether we run the java code containerized or not containerized.

 

Attachments:

  • The query that is hanging
  • Excerpt of the sessions showing the 3 PIDs (see screenshot below as well)

 

Any help is appreciated,

 

Ivan 

 

 

Attachment

pgsql-admin by date:

Previous
From: Goti
Date:
Subject: Re: ERROR: column c.relhasoids does not exist in Postgres 13
Next
From: Ron
Date:
Subject: Re: Create temp table query hangs