pg: Add support for domain types
+ refactor things a bit so that send & recv functions use the same context struct, because the way they're setup is pretty much the same for both. This also adds recursive type resolution for bind parameters.
This commit is contained in:
parent
7515032261
commit
d95ff76d43
3 changed files with 83 additions and 82 deletions
|
|
@ -8,7 +8,7 @@ plan skip_all => 'Please set FU_TEST_DB to a PostgreSQL connection string to run
|
|||
my $conn = FU::PG->connect($ENV{FU_TEST_DB});
|
||||
|
||||
ok !eval { $conn->q('SELECT $1::aclitem', '')->exec; 1 };
|
||||
like $@, qr/Unable to use type/;
|
||||
like $@, qr/Unable to send or receive/;
|
||||
|
||||
{
|
||||
my $txn = $conn->txn;
|
||||
|
|
@ -18,6 +18,13 @@ like $@, qr/Unable to use type/;
|
|||
|
||||
is_deeply $txn->q("SELECT '{a,b,null}'::fupg_test_enum[]")->val, ['a','b',undef];
|
||||
is $txn->q('SELECT $1::fupg_test_enum[]', ['a','b',undef])->text_results->val, '{a,b,NULL}';
|
||||
|
||||
$txn->exec("CREATE DOMAIN fupg_test_domain AS fupg_test_enum CHECK(value IN('a','b'))");
|
||||
is $txn->q("SELECT 'a'::fupg_test_domain")->val, 'a';
|
||||
is $txn->q('SELECT $1::fupg_test_domain', 'b')->val, 'b';
|
||||
|
||||
is_deeply $txn->q("SELECT '{a,b,null}'::fupg_test_domain[]")->val, ['a','b',undef];
|
||||
is $txn->q('SELECT $1::fupg_test_domain[]', ['a','b',undef])->text_results->val, '{a,b,NULL}';
|
||||
}
|
||||
|
||||
done_testing;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue