ERROR: first argument of transform function must be type "internal"
CREATE TRANSFORM FOR hstore LANGUAGE plperl (FROM SQL WITH FUNCTION hstore_to_plperl(internal), TO SQL WITH FUNCTION plperl_to_hstore(internal)); -- ok
CREATE TRANSFORM FOR hstore LANGUAGE plperl (FROM SQL WITH FUNCTION hstore_to_plperl(internal), TO SQL WITH FUNCTION plperl_to_hstore(internal)); -- fail
-ERROR: transform for type hstore language plperl already exists
+ERROR: transform for type hstore language "plperl" already exists
CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plperl (FROM SQL WITH FUNCTION hstore_to_plperl(internal), TO SQL WITH FUNCTION plperl_to_hstore(internal)); -- ok
CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plperl (FROM SQL WITH FUNCTION hstore_to_plperl(internal)); -- ok
CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plperl (TO SQL WITH FUNCTION plperl_to_hstore(internal)); -- ok
+COMMENT ON TRANSFORM FOR hstore LANGUAGE plperl IS 'test';
DROP TRANSFORM IF EXISTS FOR fake_type LANGUAGE plperl;
NOTICE: type "fake_type" does not exist, skipping
DROP TRANSFORM IF EXISTS FOR hstore LANGUAGE fake_lang;
-NOTICE: transform for type hstore language fake_lang does not exist, skipping
+NOTICE: transform for type hstore language "fake_lang" does not exist, skipping
DROP TRANSFORM FOR foo LANGUAGE plperl;
ERROR: type "foo" does not exist
DROP TRANSFORM FOR hstore LANGUAGE foo;
ERROR: language "foo" does not exist
DROP TRANSFORM FOR hstore LANGUAGE plperl;
DROP TRANSFORM IF EXISTS FOR hstore LANGUAGE plperl;
-NOTICE: transform for type hstore language plperl does not exist, skipping
+NOTICE: transform for type hstore language "plperl" does not exist, skipping
DROP FUNCTION hstore_to_plperl(val internal);
DROP FUNCTION plperl_to_hstore(val internal);
CREATE EXTENSION hstore_plperl;
CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plperl (FROM SQL WITH FUNCTION hstore_to_plperl(internal)); -- ok
CREATE OR REPLACE TRANSFORM FOR hstore LANGUAGE plperl (TO SQL WITH FUNCTION plperl_to_hstore(internal)); -- ok
+COMMENT ON TRANSFORM FOR hstore LANGUAGE plperl IS 'test';
+
DROP TRANSFORM IF EXISTS FOR fake_type LANGUAGE plperl;
DROP TRANSFORM IF EXISTS FOR hstore LANGUAGE fake_lang;
DROP TRANSFORM FOR foo LANGUAGE plperl;
case OBJECT_TRANSFORM:
{
TypeName *typename = (TypeName *) linitial(objname);
- char *langname = (char *) linitial(objargs);
+ char *langname = strVal(linitial(objargs));
Oid type_id = LookupTypeNameOid(NULL, typename, missing_ok);
Oid lang_id = get_language_oid(langname, missing_ok);
case OBJECT_TRANSFORM:
if (!type_in_list_does_not_exist_skipping(objname, &msg, &name))
{
- msg = gettext_noop("transform for type %s language %s does not exist, skipping");
+ msg = gettext_noop("transform for type %s language \"%s\" does not exist, skipping");
name = TypeNameToString((TypeName *) linitial(objname));
- args = (char *) linitial(objargs);
+ args = strVal(linitial(objargs));
}
break;
case OBJECT_TRIGGER:
if (!stmt->replace)
ereport(ERROR,
(errcode(ERRCODE_DUPLICATE_OBJECT),
- errmsg("transform for type %s language %s already exists",
+ errmsg("transform for type %s language \"%s\" already exists",
format_type_be(typeid),
stmt->lang)));
n->action = $4;
n->objtype = OBJECT_TRANSFORM;
n->objname = list_make1($7);
- n->objargs = list_make1($9);
+ n->objargs = list_make1(makeString($9));
$$ = (Node *)n;
}
| ALTER EXTENSION name add_drop TYPE_P Typename
CommentStmt *n = makeNode(CommentStmt);
n->objtype = OBJECT_TRANSFORM;
n->objname = list_make1($5);
- n->objargs = list_make1($7);
+ n->objargs = list_make1(makeString($7));
n->comment = $9;
$$ = (Node *) n;
}
DropStmt *n = makeNode(DropStmt);
n->removeType = OBJECT_TRANSFORM;
n->objects = list_make1(list_make1($5));
- n->arguments = list_make1(list_make1($7));
+ n->arguments = list_make1(list_make1(makeString($7)));
n->behavior = $8;
n->missing_ok = $3;
$$ = (Node *)n;