--- /dev/null
+test_ddl_deparse is an example of how to use the pg_ddl_command datatype.
+It is not intended to do anything useful on its own; rather, it is a
+demonstration of how to use the datatype, and to provide some unit tests for
+it.
+
+The functions in this extension are intended to be able to process some
+part of the struct and produce some readable output, preferrably handling
+all possible cases so that SQL test code can be written.
+/*----------------------------------------------------------------------
+ * test_ddl_deparse.c
+ * Support functions for the test_ddl_deparse module
+ *
+ * Copyright (C) 2014-2015, PostgreSQL Global Development Group
+ *
+ * IDENTIFICATION
+ * src/test/modules/test_ddl_deparse/test_ddl_deparse.c
+ *----------------------------------------------------------------------
+ */
#include "postgres.h"
#include "catalog/pg_type.h"
PG_FUNCTION_INFO_V1(get_command_tag);
PG_FUNCTION_INFO_V1(get_altertable_subcmdtypes);
+/*
+ * Return the textual representation of the struct type used to represent a
+ * command in struct CollectedCommand format.
+ */
Datum
get_command_type(PG_FUNCTION_ARGS)
{
PG_RETURN_TEXT_P(cstring_to_text(type));
}
+/*
+ * Return the command tag corresponding to a parse node contained in a
+ * CollectedCommand struct.
+ */
Datum
get_command_tag(PG_FUNCTION_ARGS)
{
PG_RETURN_TEXT_P(cstring_to_text(CreateCommandTag(cmd->parsetree)));
}
+/*
+ * Return a text array representation of the subcommands of an ALTER TABLE
+ * command.
+ */
Datum
get_altertable_subcmdtypes(PG_FUNCTION_ARGS)
{
case AT_ReAddConstraint:
strtype = "(re) ADD CONSTRAINT";
break;
+ case AT_ReAddComment:
+ strtype = "(re) ADD COMMENT";
+ break;
case AT_AlterConstraint:
strtype = "ALTER CONSTRAINT";
break;
break;
default:
strtype = "unrecognized";
+ break;
}
astate =