Re: is date_part immutable or not? - Mailing list pgsql-general

From Олег Самойлов
Subject Re: is date_part immutable or not?
Date
Msg-id 25DC3683-C176-409E-A4E6-92034BBA341F@ya.ru
Whole thread Raw
In response to is date_part immutable or not?  (Олег Самойлов <splarv@ya.ru>)
List pgsql-general
My mistake.

Schema              | pg_catalog
Name                | date_part
Result data type    | double precision
Argument data types | text, timestamp with time zone
Type                | func
Volatility          | stable
Parallel            | safe
Owner               | postgres
Security            | invoker
Access privileges   |
Language            | internal
Source code         | timestamptz_part
Description         | extract field from timestamp with time zone

is stable, but

Schema              | pg_catalog
Name                | date_part
Result data type    | double precision
Argument data types | text, date
Type                | func
Volatility          | immutable
Parallel            | safe
Owner               | postgres
Security            | invoker
Access privileges   |
Language            | sql
Source code         | select pg_catalog.date_part($1, cast($2 as timestamp without tim
e zone))
Description         | extract field from date

is immutable and
Schema              | pg_catalog
Name                | date_part
Result data type    | double precision
Argument data types | text, timestamp without time zone
Type                | func
Volatility          | immutable
Parallel            | safe
Owner               | postgres
Security            | invoker
Access privileges   |
Language            | internal
Source code         | timestamp_part
Description         | extract field from timestamp

immutable too. But date_part('isodow', log_time::date) and date_part('isodow', log_time::timestamp) don't work too.

How to workaround this?

> 21 авг. 2020 г., в 14:57, Олег Самойлов <splarv@ya.ru> написал(а):
>
> PostgreSQL 12.4
> Just create partitioned table for PostgreSQL logs
>
> CREATE TABLE pglog.pglog (
>   log_time timestamp(3) with time zone,
>   user_name text,
>   database_name text,
>   process_id integer,
>   connection_from text,
>   session_id text,
>   session_line_num bigint,
>   command_tag text,
>   session_start_time timestamp with time zone,
>   virtual_transaction_id text,
>   transaction_id bigint,
>   error_severity text,
>   sql_state_code text,
>   message text,
>   detail text,
>   hint text,
>   internal_query text,
>   internal_query_pos integer,
>   context text,
>   query text,
>   query_pos integer,
>   location text,
>   application_name text
> ) PARTITION BY LIST (date_part('isodow', log_time));
>
> ERROR:  functions in partition key expression must be marked IMMUTABLE
>
> But, date_part is immutable
>
> Schema              | pg_catalog
> Name                | date_part
> Result data type    | double precision
> Argument data types | text, time with time zone
> Type                | func
> Volatility          | immutable
> Parallel            | safe
> Owner               | postgres
> Security            | invoker
> Access privileges   |
> Language            | internal
> Source code         | timetz_part
> Description         | extract field from time with time zone
>
> What is wrong here?
>
>




pgsql-general by date:

Previous
From: Thomas Boussekey
Date:
Subject: When are largobject records TOASTed into pg_toast_2613?
Next
From: iulian dragos
Date:
Subject: Query plan prefers hash join when nested loop is much faster