-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathTODO
More file actions
180 lines (121 loc) · 6.05 KB
/
TODO
File metadata and controls
180 lines (121 loc) · 6.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
$Header: /cvsroot/pgpool/pgpool-II/TODO,v 1.19 2009/11/05 03:43:27 t-ishii Exp $
* General
- Add backend id to statement log
- Show PostgreSQL backend process ids in process status
- Prepare for changing postgresql.conf directives which produce 'S'
message. Othewise we get:
pool_process_query: 1 th kind S does not match with master or majority
connection kind C
ERROR: pid 26122: kind mismatch
among backends. Possible last query was: "UPDATE branches SET bbalance
= bbalance + -3820 WHERE bid = 1;" kind details are: 0[C] 1[S]
It seems PostgreSQL sends following parameter status at the *first* pgpool.conf reload only.
2009-02-23 23:06:21 LOG: pid 5611: name: is_superuser value: on
2009-02-23 23:06:31 LOG: pid 5627: name: DateStyle value: ISO, MDY
2009-02-23 23:06:31 LOG: pid 5626: name: DateStyle value: ISO, MDY
2009-02-23 23:06:31 LOG: pid 5622: name: DateStyle value: ISO, MDY
(this item was resolved in 2.2)
- drop table should be in a transactin block? It is judged here:
(this item was resolved in 2.2)
POOL_STATUS start_internal_transaction(POOL_CONNECTION_POOL *backend, Node *node)
{
int i;
/* if we are not in a transaction block,
* start a new transaction
*/
if (TSTATE(backend) == 'I' &&
(IsA(node, InsertStmt) || IsA(node, UpdateStmt) ||
IsA(node, DeleteStmt) || IsA(node, SelectStmt)))
example session log:
2009-01-09 00:22:20 JST t-ishii test 853 LOG: statement: begin;
2009-01-09 00:22:23 JST t-ishii test 853 LOG: statement: lock table t1;
2009-01-09 00:22:23 JST t-ishii test 853 LOG: unexpected EOF on client connection
2009-01-09 00:22:45 JST t-ishii test 860 LOG: statement: drop table t1;
2009-01-09 00:22:46 JST t-ishii test 860 LOG: unexpected EOF on client connection
2009-01-09 00:22:49 JST t-ishii test 877 LOG: statement: drop table t1;
2009-01-09 00:22:49 JST t-ishii test 877 ERROR: table "t1" does not exist
2009-01-09 00:22:49 JST t-ishii test 877 STATEMENT: drop table t1;
?????????
2009-01-09 00:22:23 JST t-ishii test 854 LOG: unexpected EOF on client connection
2009-01-09 00:22:46 JST t-ishii test 861 LOG: statement: drop table t1;
2009-01-09 00:22:46 JST t-ishii test 861 ERROR: cache lookup failed for constraint 1857934
2009-01-09 00:22:46 JST t-ishii test 861 STATEMENT: drop table t1;
2009-01-09 00:22:46 JST t-ishii test 861 LOG: could not send data to client: ???????????
2009-01-09 00:22:46 JST t-ishii test 861 LOG: unexpected EOF on client connection
2009-01-09 00:22:49 JST t-ishii test 878 LOG: statement: drop table t1;
2009-01-09 00:22:49 JST t-ishii test 878 ERROR: cache lookup failed for constraint 1857934
2009-01-09 00:22:49 JST t-ishii test 878 STATEMENT: drop table t1;
2009-01-09 00:25:51 JST t-ishii test 878 LOG: statement: create table t1(i int);
2009-01-09 00:25:52 JST t-ishii test 878 ERROR: relation "t1" already exists
2009-01-09 00:25:52 JST t-ishii test 878 STATEMENT: create table t1(i int);
2009-01-09 00:25:52 JST t-ishii test 878 LOG: could not send data to client: ???????????
2009-01-09 00:25:52 JST t-ishii test 878 LOG: unexpected EOF on client connection
- BEGIN; BEGIN; causes:
(this item was resolved in 2.2)
ERROR: kind mismatch among backends 0[N] 1[E]
detect_error() checks following NOTICE(ERRRO¤Î25001 means /* SET
TRANSACTION ISOLATION LEVEL must be called before any query */)
WARNING: 25001: there is already a transaction in progress
this will send an error query to abort a transaction.
- regression failres:
triggers ... FAILED
test sanity_check ... FAILED
portals ... FAILED
test misc ... FAILED
plpgsql ... FAILED
largeobject ... FAILED
test tablespace ... FAILED
========================
7 of 114 tests failed.
========================
this happens when replication true, insert_lock true, replicate_select false,
load_balance false.
if replicate_select is true, prepared_xacts fails(because \d fails)
and prepared transactio remain, which keep a lock on pg_class in
access share mode. And alter table pg_class cannot obtain exclusive
lock, which causes all SELECTs suspend and regression cannot contiunue.
- Allow client encoding conversion. This was possible in pgpool-I
- Allow special comment such as "/* STRICT */". This was possible in pgpool-I
- Allow multi statement
- Sometimes query is sent to a DB node despite its weight is 0
- Avoid cross pgpool process deadlock situation. This is a long
standing problem since pgpool-II was born (pgpool-I avoids this by
setting timeout)
- Allow to stop PostgeSQL from pgpoolAdmin to make the on-line
recovery more convenient. This requires something like
pgpool_remote_stop to be specified in pgpool.conf.
- If DISCARD ALL is specified in the reset_query_list and transaction
is not closed when client disconnects, automatically issue ABORT
before issuing DISCARD ALL
- Add SSL support
- Allow to specify queries issued when starting sessions
- Audit functionality?
- Make accept queue
- Graceful shutdown, attach, detach
* Query handling
- Enhance DROP DATABASE handling (not disconnect all idle connections)
* Replication
- Allow per table replication
- Allow per session level and query level load balancing
- Allow replication of SEQUENCE
- Allow replication of OID
- Allow to specify functions to be replicated other than nextval(), setval()
* On line recovery
- Allow recovery_1st_stage_command to get PostgreSQL listen port,
database cluster directory etc. info
* Query cache
- Cache invalidation
* Parallel query
- Performance enhance for more complex queries
- Allow to handle transaction
- Allow to handle extended queries
- process alias in FROM clause
db=# select * from data1 as d1 inner join data2 as d2 on d1.id=d2.id;
ERROR: sql error
DETAIL: ERROR: missing FROM-clause entry for table "d1"
LINE 1: SELECT pool_parallel("SELECT d1.id, d1.aaaa, d1.bbbb...
^
2008-03-11 10:28:17 LOG: pid 6186: statement: SELECT pool_parallel("SELECT d1.id, d1.aaaa, d1.bbbb, a.cccc FROM data1")
- process USING clause in JOIN
* Docs
- Write libpcp API docs