Re: Add support for AT LOCAL

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Vik Fearing <vik@postgresfriends.org>
Cc: cary huang <hcary328@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2023-10-06T06:05:12Z
Lists: pgsql-hackers
On Wed, Oct 04, 2023 at 03:49:03PM +0100, Vik Fearing wrote:
> Okay.  Here is a v3 using that approach.

You have not posted any numbers to show if there's a difference in
performance, so I have run a simple test:
PREPARE test AS SELECT TIMESTAMP '1978-07-07 19:38' AT LOCAL;
DO $$ BEGIN
  FOR i IN 1..1000000 LOOP
    EXECUTE 'EXECUTE test';
  END LOOP;
END $$;

On a medium-ish benchmark machine I have (16 vCPUs, 32GB of memory,
-O2, no asserts), this DO block takes in average 4.3s to run with v2,
versus 3.6s with v3.  So yes, that's faster.

I haven't yet finished my review of the patch, still looking at it.
--
Michael

Commits

  1. Dodge a compiler bug affecting timetz_zone/timetz_izone.

  2. Back-patch test cases for timetz_zone/timetz_izone.

  3. Add regression test coverage for timetz_izone().

  4. Add support for AT LOCAL

  5. doc: Mention timezone(zone, time) in section for AT TIME ZONE

  6. Use HASH_BLOBS for xidhash.