25001: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline

Wij krijgen de volgende error bij het laden van Exact Online in PostgreSQL.

Bron: Exact Online
Destination: PostgreSQL

Query:

begin
  create or replace table eol_divisions@pg
  as 
  SELECT * from ExactOnlineREST.System.AllDivisions@eol
  ;
  create or replace table eol_accounts@pg
  as 
  SELECT * from ExactOnlineREST.CRM.Accounts@eol
  ;
end;

Foutmelding:

An error occured
cd647983-daae-4e3f-bb45-b38794cf60c6
itgenase094:
The table can not be created. (EOL_DIVISIONS).
itgenpsr026: Maintenance of the table ‘EOL_DIVISIONS’ failed.
25001: CREATE INDEX CONCURRENTLY cannot be executed within a pipeline.

Gaat over Invantive Cloud versie 22.1.161-INTERNAL+3899

Probleem was aanwezig met PostgreSQL 15.2. Na een downgrade naar 15.1 is het probleem niet meer aanwezig

Goed dat u de oorzaak gevonden hebt. We waren nog bezig met een analyse, maar dat leverde nog weinig op. We gaan kijken of de PostgreSQL componenten die we gebruiken compatible zijn met 15.2.

Dit probleem lijkt volgens deze link op te treden sinds release 11.19, 13.10, 14.7, 15.2. Eerdere releases hadden er schijnbaar geen last van en het betreft een breaking change die in releases van 9 februari 2023 is geïntroduceerd. Waarschijnlijk betreft het ook PostgreSQL release 12.14; zie PostgreSQL: PostgreSQL 15.2, 14.7, 13.10, 12.14, and 11.19 Released!.

Mogelijk is het een zijdelings effect van “Avoid an immediate commit after ANALYZE when using query pipelining.”. De details uit 11.19 zijn:

  • In extended query protocol, avoid an immediate commit after ANALYZE if we’re running a pipeline (Tom Lane)

If there’s not been an explicit BEGIN TRANSACTION, ANALYZE would take it on itself to commit, which should not happen within a pipelined series of commands.

Op dit moment laten we het probleem cq. de oorzaak even rusten zodat de markt zijn werk kan doen. Mocht probleem aanhouden, dan zal een oplossing gezocht worden.

Ook onder 15.3 is het nog niet mogelijk om met gelijktijdige toegang van gebruikers indexen te maken binnen een PostgreSQL-pipeline.

Vanaf release 22.0.674 (22.1.220-BETA) is de concurrent-optie bij het maken van indexen uitgeschakeld. Hiermee is gebruik met PostgreSQL 15.2 en 15.3 mogelijk.

Release 22.0.674 is op 21 juni 2023 in productie genomen op Invantive Cloud.