citusdata / citusdata/citus

citus.multi_task_query_log_level interaction with prepared statements

Open
#2,417 1 comment 0 reactions 1 assignee Claimed by @DimCitus View on GitHub
Dominant language
C
Stars
12.8k
Forks
794
Avg merge
2d 14h
Merged PRs (30d)
31

Description

We previously had the erroring on 6th execution error which we fixed. I guess we fixed this actually redoing the plan during execution time. This is not picked up by the **citus.multi_task_query_log_level** GUC.
**Schema:**
```
CREATE TABLE test_distributed(shard_key int, value int);
CREATE UNIQUE INDEX u_indx ON test_distributed(shard_key);

SELECT create_distributed_table('test_distributed','shard_key');
```

```
CREATE OR REPLACE FUNCTION test_func(s_key int)
RETURNS void
AS $$
BEGIN
DELETE FROM test_distributed WHERE shard_key=s_key;
END;
$$
LANGUAGE plpgsql;
```
**When citus.multi_task_query_log_level is set to 'error', 6th time a router query in a plpgsql function errors out.**
```
citus=> set citus.multi_task_query_log_level to 'error';
SET
citus=> SELECT test_func(1);
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
ERROR: multi-task query about to be executed
HINT: Queries are split to multiple tasks if they have to be split into several queries on the workers.
CONTEXT: SQL statement "DELETE FROM test_distributed WHERE shard_key=s_key"
PL/pgSQL function test_func(integer) line 3 at SQL statement
```

**In reality, even the 6th execution does router planning:**
Reconnect again and run the below commands.
```
citus=> SELECT test_func(1);
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)

citus=> SELECT test_func(1);
DEBUG: distributed statement: DELETE FROM public.test_distributed_102008 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102009 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102010 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102011 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102012 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102013 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102014 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102015 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102016 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102017 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102018 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102019 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102020 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102021 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102022 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102023 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102024 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102025 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102026 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102027 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102028 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102029 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102030 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102031 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102032 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102033 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102034 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102035 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102036 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102037 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102038 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: distributed statement: DELETE FROM public.test_distributed_102039 test_distributed WHERE (shard_key OPERATOR(pg_catalog.=) $1)
DEBUG: Creating router plan
-- This is where I think we redo the plan and the GUC doesn't pick it up.
DEBUG: Plan is router executable
DEBUG: Creating router plan
DEBUG: Plan is router executable
DETAIL: distribution column value: 1
DEBUG: assigned task 0 to node ec2-23-22-235-159.compute-1.amazonaws.com:5432
test_func
-----------

(1 row)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.