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@xxxxx> написал(а): > > 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? > >