-- Check generated json for simple and multi line select query /*dddbs='postgres.db',traceparent='00-00000000000000000000000000000001-0000000000000001-01'*/ SELECT 1; ?column? ---------- 1 (1 row) /*dddbs='postgres.db',traceparent='00-00000000000000000000000000000002-0000000000000002-01'*/ SELECT 1, 2; ?column? | ?column? ----------+---------- 1 | 2 (1 row) -- Check json generated spans for simple and multi line query SELECT trace_id, name, kind, lvl FROM peek_ordered_json_spans; trace_id | name | kind | lvl ----------------------------------+-------------+------+----- 00000000000000000000000000000001 | SELECT $1 | 2 | 1 00000000000000000000000000000001 | Planner | 2 | 2 00000000000000000000000000000001 | ExecutorRun | 2 | 2 00000000000000000000000000000001 | Result | 2 | 3 00000000000000000000000000000002 | SELECT +| 2 | 1 | $1, +| | | $2 | | 00000000000000000000000000000002 | Planner | 2 | 2 00000000000000000000000000000002 | ExecutorRun | 2 | 2 00000000000000000000000000000002 | Result | 2 | 3 (8 rows) -- Test plan attributes with json export SELECT trace_id, name, plan_startup_cost, plan_total_cost, plan_rows, plan_width, parameters, lvl FROM peek_ordered_json_spans; trace_id | name | plan_startup_cost | plan_total_cost | plan_rows | plan_width | parameters | lvl ----------------------------------+-------------+-------------------+-----------------+-----------+------------+------------+----- 00000000000000000000000000000001 | SELECT $1 | | | | | {1} | 1 00000000000000000000000000000001 | Planner | | | | | | 2 00000000000000000000000000000001 | ExecutorRun | | | | | | 2 00000000000000000000000000000001 | Result | | 0.01 | 1 | 4 | | 3 00000000000000000000000000000002 | SELECT +| | | | | {1,2} | 1 | $1, +| | | | | | | $2 | | | | | | 00000000000000000000000000000002 | Planner | | | | | | 2 00000000000000000000000000000002 | ExecutorRun | | | | | | 2 00000000000000000000000000000002 | Result | | 0.01 | 1 | 8 | | 3 (8 rows) CALL clean_spans(); -- Test error code with json export set statement_timeout=200; /*dddbs='postgres.db',traceparent='00-00000000000000000000000000000001-0000000000000001-01'*/ select * from pg_sleep(1); ERROR: canceling statement due to statement timeout -- Check json generated spans with sql error code set statement_timeout TO DEFAULT; SELECT trace_id, name, sql_error_code, status_code, status_message, lvl FROM peek_ordered_json_spans; trace_id | name | sql_error_code | status_code | status_message | lvl ----------------------------------+----------------------------+----------------+-------------+-------------------+----- 00000000000000000000000000000001 | select * from pg_sleep($1) | 57014 | 2 | "SQLError: 57014" | 1 00000000000000000000000000000001 | Planner | | 1 | | 2 00000000000000000000000000000001 | ExecutorRun | 57014 | 2 | "SQLError: 57014" | 2 00000000000000000000000000000001 | FunctionScan on pg_sleep | 57014 | 2 | "SQLError: 57014" | 3 (4 rows) CALL clean_spans(); -- Test subxact_count and node counters with json export /*dddbs='postgres.db',traceparent='00-00000000000000000000000000000001-0000000000000001-01'*/ BEGIN; SAVEPOINT s1; INSERT INTO pg_tracing_test VALUES(generate_series(1, 2), 'aaa'); SAVEPOINT s2; INSERT INTO pg_tracing_test VALUES(generate_series(1, 2), 'aaa'); ROLLBACK; SELECT trace_id, name, subxact_count, shared_blks_hit > 0 as has_shared_hit, wal_records > 0 as has_wal_records, wal_bytes > 0 as has_wal_bytes, startup > 0 as has_startup, lvl FROM peek_ordered_json_spans WHERE name LIKE 'INSERT%'; trace_id | name | subxact_count | has_shared_hit | has_wal_records | has_wal_bytes | has_startup | lvl ----------------------------------+-----------------------------------------------------------------+---------------+----------------+-----------------+---------------+-------------+----- 00000000000000000000000000000001 | INSERT INTO pg_tracing_test VALUES(generate_series($1, $2), $3) | | t | t | t | | 2 00000000000000000000000000000001 | INSERT INTO pg_tracing_test VALUES(generate_series($1, $2), $3) | 1 | t | t | t | | 2 (2 rows) CALL clean_spans(); -- Test parameters and deparse_info /*dddbs='postgres.db',traceparent='00-00000000000000000000000000000001-0000000000000001-01'*/ SELECT * FROM pg_tracing_test WHERE a=1; a | b | c ---+----------------------+--- 1 | 1 | 1 (1 row) SELECT trace_id, name, parameters, deparse_info, lvl FROM peek_ordered_json_spans; trace_id | name | parameters | deparse_info | lvl ----------------------------------+-------------------------------------------------------+------------+---------------------+----- 00000000000000000000000000000001 | SELECT * FROM pg_tracing_test WHERE a=$1 | {1} | | 1 00000000000000000000000000000001 | Planner | | | 2 00000000000000000000000000000001 | ExecutorRun | | | 2 00000000000000000000000000000001 | IndexScan using pg_tracing_index_a on pg_tracing_test | | Index Cond: (a = 1) | 3 (4 rows) CALL clean_spans(); -- Test service name /*traceparent='00-00000000000000000000000000000001-0000000000000001-01'*/ SELECT * FROM pg_tracing_test WHERE a=1; a | b | c ---+----------------------+--- 1 | 1 | 1 (1 row) SELECT trace_id, name, service_name FROM peek_ordered_json_spans; trace_id | name | service_name ----------------------------------+-------------------------------------------------------+--------------------- 00000000000000000000000000000001 | SELECT * FROM pg_tracing_test WHERE a=$1 | "PostgreSQL_Server" 00000000000000000000000000000001 | Planner | "PostgreSQL_Server" 00000000000000000000000000000001 | ExecutorRun | "PostgreSQL_Server" 00000000000000000000000000000001 | IndexScan using pg_tracing_index_a on pg_tracing_test | "PostgreSQL_Server" (4 rows) -- Cleanup CALL reset_settings(); CALL clean_spans();