aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-12-11 11:48:00 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2018-12-11 11:48:00 -0500
commit0226cd72ec46ae946db77e9904b5588ca54f3ec6 (patch)
treeb54c9efd75c77d8be181b07ee1074d6d9a620e0f /src
parentb10997b5b3eec7fb9fe64d7543435552f327ee51 (diff)
downloadpostgresql-0226cd72ec46ae946db77e9904b5588ca54f3ec6.tar.gz
postgresql-0226cd72ec46ae946db77e9904b5588ca54f3ec6.zip
Fix test_rls_hooks to assign expression collations properly.
This module overlooked this necessary fixup step on the results of transformWhereClause(). It accidentally worked anyway, because the constructed expression involved type "name" which is not collatable, but it fell over while I was experimenting with changing "name" to be collatable. Back-patch, not because there's any live bug here in back branches, but because somebody might use this code as a model for some real application and then not understand why it doesn't work.
Diffstat (limited to 'src')
-rw-r--r--src/test/modules/test_rls_hooks/test_rls_hooks.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/test/modules/test_rls_hooks/test_rls_hooks.c b/src/test/modules/test_rls_hooks/test_rls_hooks.c
index 65bf3e33c90..447971a1785 100644
--- a/src/test/modules/test_rls_hooks/test_rls_hooks.c
+++ b/src/test/modules/test_rls_hooks/test_rls_hooks.c
@@ -22,6 +22,7 @@
#include <nodes/makefuncs.h>
#include <nodes/makefuncs.h>
#include <parser/parse_clause.h>
+#include <parser/parse_collate.h>
#include <parser/parse_node.h>
#include <parser/parse_relation.h>
#include <rewrite/rowsecurity.h>
@@ -107,6 +108,8 @@ test_rls_hooks_permissive(CmdType cmdtype, Relation relation)
policy->qual = (Expr *) transformWhereClause(qual_pstate, copyObject(e),
EXPR_KIND_POLICY,
"POLICY");
+ /* Fix up collation information */
+ assign_expr_collations(qual_pstate, (Node *) policy->qual);
policy->with_check_qual = copyObject(policy->qual);
policy->hassublinks = false;
@@ -165,6 +168,8 @@ test_rls_hooks_restrictive(CmdType cmdtype, Relation relation)
policy->qual = (Expr *) transformWhereClause(qual_pstate, copyObject(e),
EXPR_KIND_POLICY,
"POLICY");
+ /* Fix up collation information */
+ assign_expr_collations(qual_pstate, (Node *) policy->qual);
policy->with_check_qual = copyObject(policy->qual);
policy->hassublinks = false;