pg: Some refactoring + more result fetching methods
This commit is contained in:
parent
d95ff76d43
commit
ccc2f1dbf0
4 changed files with 535 additions and 332 deletions
|
|
@ -144,6 +144,74 @@ subtest '$st->rowh', sub {
|
|||
is_deeply $conn->q('SELECT 1 as a, $1::int as b', undef)->rowh, {a => 1, b => undef};
|
||||
};
|
||||
|
||||
subtest '$st->alla', sub {
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->alla, [];
|
||||
is_deeply $conn->q('SELECT')->alla, [[]];
|
||||
is_deeply $conn->q('SELECT 1')->alla, [[1]];
|
||||
is_deeply $conn->q('SELECT 1, null UNION ALL SELECT NULL, 2')->alla, [[1,undef],[undef,2]];
|
||||
};
|
||||
|
||||
subtest '$st->allh', sub {
|
||||
ok !eval { $conn->q('SELECT 1 as a, 2 as a')->allh; 1 };
|
||||
like $@, qr/Query returns multiple columns with the same name/;
|
||||
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->allh, [];
|
||||
is_deeply $conn->q('SELECT')->allh, [{}];
|
||||
is_deeply $conn->q('SELECT 1 a')->allh, [{a=>1}];
|
||||
is_deeply $conn->q('SELECT 1 a, null b UNION ALL SELECT NULL, 2')->allh, [{a=>1,b=>undef},{a=>undef,b=>2}];
|
||||
};
|
||||
|
||||
subtest '$st->flat', sub {
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->flat, [];
|
||||
is_deeply $conn->q('SELECT')->flat, [];
|
||||
is_deeply $conn->q('SELECT 1')->flat, [1];
|
||||
is_deeply $conn->q('SELECT 1, null UNION ALL SELECT NULL, 2')->flat, [1,undef,undef,2];
|
||||
};
|
||||
|
||||
subtest '$st->kvv', sub {
|
||||
ok !eval { $conn->q('SELECT')->kvv; 1; };
|
||||
like $@, qr/returning no data/;
|
||||
|
||||
ok !eval { $conn->q('SELECT 1, 2, 3')->kvv; 1; };
|
||||
like $@, qr/returning more than two columns/;
|
||||
|
||||
ok !eval { $conn->q('SELECT 1 UNION ALL SELECT 1')->kvv; 1; };
|
||||
like $@, qr/is duplicated/;
|
||||
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->kvv, {};
|
||||
is_deeply $conn->q('SELECT 1')->kvv, {1=>1};
|
||||
is_deeply $conn->q('SELECT 1, null UNION ALL SELECT 3, 2')->kvv, {1=>undef,3=>2};
|
||||
};
|
||||
|
||||
subtest '$st->kva', sub {
|
||||
ok !eval { $conn->q('SELECT')->kva; 1; };
|
||||
like $@, qr/returning no data/;
|
||||
|
||||
ok !eval { $conn->q('SELECT 1 UNION ALL SELECT 1')->kva; 1; };
|
||||
like $@, qr/is duplicated/;
|
||||
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->kva, {};
|
||||
is_deeply $conn->q('SELECT 1')->kva, {1=>[]};
|
||||
is_deeply $conn->q("SELECT 1, null, 'hi' UNION ALL SELECT 3, 2, 'ok'")->kva,
|
||||
{1=>[undef,'hi'], 3=>[2, 'ok']};
|
||||
};
|
||||
|
||||
subtest '$st->kvh', sub {
|
||||
ok !eval { $conn->q('SELECT')->kvh; 1; };
|
||||
like $@, qr/returning no data/;
|
||||
|
||||
ok !eval { $conn->q('SELECT 1 UNION ALL SELECT 1')->kvh; 1; };
|
||||
like $@, qr/is duplicated/;
|
||||
|
||||
ok !eval { $conn->q('SELECT 1, 2, 3')->kvh; 1; };
|
||||
like $@, qr/Query returns multiple columns with the same name/;
|
||||
|
||||
is_deeply $conn->q('SELECT 1 WHERE false')->kvh, {};
|
||||
is_deeply $conn->q('SELECT 1')->kvh, {1=>{}};
|
||||
is_deeply $conn->q("SELECT 1 as a , null as a, 'hi' as b UNION ALL SELECT 3, 2, 'ok'")->kvh,
|
||||
{1=>{a=>undef,b=>'hi'}, 3=>{a=>2,b=>'ok'}};
|
||||
};
|
||||
|
||||
subtest 'txn', sub {
|
||||
$conn->exec('CREATE TEMPORARY TABLE fupg_tst (id int)');
|
||||
$conn->txn->exec('INSERT INTO fupg_tst VALUES (1)'); # rolled back
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue