1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-18 17:41:14 +03:00

Add some comments to test_ddl_deparse and a README

Per comments from Heikki Linnakangas.

Backpatch to 9.5, where this module was introduced.
This commit is contained in:
Alvaro Herrera 2015-07-20 11:20:40 +02:00
parent 13f2db2ffb
commit 8f612b7f00
2 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,8 @@
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.

View File

@ -1,3 +1,13 @@
/*----------------------------------------------------------------------
* 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 =