1# vi:filetype=
2
3use lib 'lib';
4use Test::Nginx::Socket;
5
6repeat_each(2);
7
8plan tests => repeat_each() * 2 * blocks();
9
10$ENV{TEST_NGINX_POSTGRESQL_PORT} ||= 5432;
11
12no_long_string();
13
14no_diff();
15
16run_tests();
17
18__DATA__
19
20=== TEST 1: bool blob field (keepalive off)
21--- http_config
22    upstream backend {
23        postgres_server     127.0.0.1:$TEST_NGINX_POSTGRESQL_PORT
24                            dbname=ngx_test user=ngx_test password=ngx_test;
25        postgres_keepalive  off;
26    }
27--- config
28    location /test {
29        echo_location /pgignore "drop table if exists foo";
30        echo_location /pg "create table foo (id serial, flag bool);";
31        echo_location /pg "insert into foo (flag) values (true);";
32        echo_location /pg "insert into foo (flag) values (false);";
33        echo_location /pg "select * from foo order by id;";
34    }
35    location /pg {
36        postgres_pass backend;
37        postgres_query $query_string;
38        rds_csv on;
39    }
40    location = /pgignore {
41        postgres_pass backend;
42        postgres_query $query_string;
43        rds_csv on;
44        error_page 500 = /ignore;
45    }
46    location /ignore { echo "ignore"; }
47--- request
48GET /test
49--- response_body eval
50qq{errcode,errstr,insert_id,affected_rows\r
510,,0,0\r
52errcode,errstr,insert_id,affected_rows\r
530,,0,0\r
54errcode,errstr,insert_id,affected_rows\r
550,,0,1\r
56errcode,errstr,insert_id,affected_rows\r
570,,0,1\r
58id,flag\r
591,t\r
602,f\r
61}
62--- skip_nginx: 2: < 0.7.46
63
64
65
66=== TEST 2: bool blob field (keepalive on)
67--- http_config
68    upstream backend {
69        postgres_server     127.0.0.1:$TEST_NGINX_POSTGRESQL_PORT
70                            dbname=ngx_test user=ngx_test password=ngx_test;
71    }
72--- config
73    location /test {
74        echo_location /pg "drop table if exists foo";
75        echo_location /pg "create table foo (id serial, flag bool);";
76        echo_location /pg "insert into foo (flag) values (true);";
77        echo_location /pg "insert into foo (flag) values (false);";
78        echo_location /pg "select * from foo order by id;";
79    }
80    location /pg {
81        postgres_pass backend;
82        postgres_query $query_string;
83        rds_csv on;
84    }
85    location = /pgignore {
86        postgres_pass backend;
87        postgres_query $query_string;
88        rds_csv on;
89        error_page 500 = /ignore;
90    }
91    location /ignore { echo "ignore"; }
92--- request
93GET /test
94--- response_body eval
95qq{errcode,errstr,insert_id,affected_rows\r
960,,0,0\r
97errcode,errstr,insert_id,affected_rows\r
980,,0,0\r
99errcode,errstr,insert_id,affected_rows\r
1000,,0,1\r
101errcode,errstr,insert_id,affected_rows\r
1020,,0,1\r
103id,flag\r
1041,t\r
1052,f\r
106}
107--- skip_nginx: 2: < 0.7.46
108
109