Commit 8f612b7f authored by Alvaro Herrera's avatar Alvaro Herrera

Add some comments to test_ddl_deparse and a README

Per comments from Heikki Linnakangas.

Backpatch to 9.5, where this module was introduced.
parent 13f2db2f
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"
......@@ -11,6 +21,10 @@ PG_FUNCTION_INFO_V1(get_command_type);
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)
{
......@@ -48,6 +62,10 @@ 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)
{
......@@ -59,6 +77,10 @@ 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)
{
......@@ -130,6 +152,9 @@ 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;
......@@ -258,6 +283,7 @@ get_altertable_subcmdtypes(PG_FUNCTION_ARGS)
break;
default:
strtype = "unrecognized";
break;
}
astate =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment