From a2fd9cfdfe7cc3fd6df908ff1992f3216bf99ba5 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Tue, 1 Jul 2025 13:09:48 -0400 Subject: [PATCH] add stuff --- contrib/pg_plan_advice/Makefile | 1 + contrib/pg_plan_advice/meson.build | 1 + contrib/pg_plan_advice/pgpa_buffer.c | 25 +++++++++++++++++++++++++ contrib/pg_plan_advice/pgpa_output.h | 21 +++++++++++++++++++++ src/tools/pgindent/typedefs.list | 1 + 5 files changed, 49 insertions(+) create mode 100644 contrib/pg_plan_advice/pgpa_buffer.c create mode 100644 contrib/pg_plan_advice/pgpa_output.h diff --git a/contrib/pg_plan_advice/Makefile b/contrib/pg_plan_advice/Makefile index f60b8023c1..e0f19dc022 100644 --- a/contrib/pg_plan_advice/Makefile +++ b/contrib/pg_plan_advice/Makefile @@ -4,6 +4,7 @@ MODULE_big = pg_plan_advice OBJS = \ $(WIN32RES) \ pg_plan_advice.o \ + pgpa_buffer.o \ pgpa_identifier.o \ pgpa_join.o \ pgpa_output.o \ diff --git a/contrib/pg_plan_advice/meson.build b/contrib/pg_plan_advice/meson.build index 4bbe1e21f3..81d313a044 100644 --- a/contrib/pg_plan_advice/meson.build +++ b/contrib/pg_plan_advice/meson.build @@ -2,6 +2,7 @@ pg_plan_advice_sources = files( 'pg_plan_advice.c', + 'pgpa_buffer.c', 'pgpa_identifier.c', 'pgpa_join.c', 'pgpa_output.c', diff --git a/contrib/pg_plan_advice/pgpa_buffer.c b/contrib/pg_plan_advice/pgpa_buffer.c new file mode 100644 index 0000000000..d8cbd1aa8e --- /dev/null +++ b/contrib/pg_plan_advice/pgpa_buffer.c @@ -0,0 +1,25 @@ +#include "postgres.h" + +typedef struct pgpa_collected_advice +{ + Oid userid; /* user OID */ + Oid dbid; /* database OID */ + uint64 queryid; /* query identifier */ + int nesting_level; /* query nesting level */ + char advice_offset; /* start of advice in textual data */ + char textual_data[FLEXIBLE_ARRAY_MEMBER]; +} pgpa_collected_advice; + +#if 0 +static inline const char * +query_string(pgpa_collected_advice *ca) +{ + return ca->textual_data; +} + +static inline const char * +advice_string(pgpa_collected_advice *ca) +{ + return ca->textual_data + ca->advice_offset; +} +#endif diff --git a/contrib/pg_plan_advice/pgpa_output.h b/contrib/pg_plan_advice/pgpa_output.h new file mode 100644 index 0000000000..f7d74d3794 --- /dev/null +++ b/contrib/pg_plan_advice/pgpa_output.h @@ -0,0 +1,21 @@ +/*------------------------------------------------------------------------- + * + * pgpa_output.h + * produce textual output from the results of a plan tree walk + * + * Copyright (c) 2016-2025, PostgreSQL Global Development Group + * + * contrib/pg_plan_advice/pgpa_output.c + * + *------------------------------------------------------------------------- + */ +#ifndef PGPA_OUTPUT_H +#define PGPA_OUTPUT_H + +#include "pgpa_walker.h" + +extern void pgpa_output_advice(StringInfo buf, + pgpa_plan_walker_context *walker, + const char **rt_identifiers); + +#endif diff --git a/src/tools/pgindent/typedefs.list b/src/tools/pgindent/typedefs.list index f162d23f30..e6baa239e0 100644 --- a/src/tools/pgindent/typedefs.list +++ b/src/tools/pgindent/typedefs.list @@ -4321,3 +4321,4 @@ pgpa_join_unroller pgpa_plan_walker_context pgpa_gathered_join pgpa_output_context +pgpa_collected_advice -- 2.39.5