On 29-06-11 01:09, Tatsuo Ishii wrote: > I have committed the patches to CVS HEAD.
I am sorry I didn't get back to you yet. It has been kind of busy here last week, but I did send the patch on to my colleague, who is more familiar with the internals of Pgpool. Thank you for the work, I hope this will solve the problems that stop us from using Pgpool. Best regards, Martijn Grendelman -- iphion B.V. > >> Oops. I found a bug with it. >> Revised patches included. >> -- >> Tatsuo Ishii >> SRA OSS, Inc. Japan >> English: http://www.sraoss.co.jp/index_en.php >> Japanese: http://www.sraoss.co.jp >> >>>> On 24-06-11 10:15, Tatsuo Ishii wrote: >>>>>> Any chance that this idea will be implemented anytime soon? >>>>>> http://lists.pgfoundry.org/pipermail/pgpool-hackers/2011-May/000716.html >>>>> >>>>> Revisiting it now. Since nobody proposed patches for this, I've been >>>>> starting coding now:-) The rewriting code is quite complex and I am >>>>> not sure whether I could finish the work by the end of this >>>>> weekend. Let me try out... >>>> >>>> Wow, I am impressed. I hope you will succeed. >>>> >>>> As a matter of fact, a colleague of mine created a patch that handles one >>>> specific case: timezone('utc'::text, now()), which is the most important >>>> case for us. >>>> >>>> He told me that the code is too complex for him to quickly handle the >>>> generic case, so he added this specific case instead. I can't imagine the >>>> patch being useful to you, but if you want to look at it, let me know. >>> >>> I have finished the work so far. However I could not make it work for >>> extended protocol. This means still Java programs or PHP PDO programs >>> are still remain same as they were. So I am not sure includes patches >>> is usefull for you or not. >>> >>> What I did was, extract default expressions (such as >>> timezone('utc'::text, now()) from the system catalog and get the >>> result to replace a query. So you could use any expressions including >>> now() for default values. >>> >>> To adopt the cases for extended protocol, probably I need to modify >>> bind_rewrite_timestamp. >>> >>> Here are test cases: >>> >>> create table t1(i int, t timestamp default timezone('utc'::text, now()), >>> t2 timestamp default current_timestamp); >>> CREATE TABLE >>> begin; >>> BEGIN >>> insert into t1 values(1, now()); >>> INSERT 0 1 >>> insert into t1 default values; >>> INSERT 0 1 >>> insert into t1 values(2); >>> INSERT 0 1 >>> insert into t1 values(3, default); >>> INSERT 0 1 >>> insert into t1(i) values(4); >>> INSERT 0 1 >>> update t1 set i = 100 where i is null; >>> UPDATE 1 >>> update t1 set i = 101,t = current_timestamp where i = 100; >>> UPDATE 1 >>> select * from t1 where i = 101; >>> i | t | t2 >>> -----+----------------------------+---------------------------- >>> 101 | 2011-06-25 17:18:30.676202 | 2011-06-25 17:18:30.676202 >>> (1 row) >>> >>> update t1 set i = 102,t = default where i = 101; >>> UPDATE 1 >>> select * from t1; >>> i | t | t2 >>> -----+----------------------------+---------------------------- >>> 1 | 2011-06-25 17:18:30.676202 | 2011-06-25 17:18:30.676202 >>> 2 | 2011-06-25 08:18:30.676202 | 2011-06-25 17:18:30.676202 >>> 3 | 2011-06-25 08:18:30.676202 | 2011-06-25 17:18:30.676202 >>> 4 | 2011-06-25 08:18:30.676202 | 2011-06-25 17:18:30.676202 >>> 102 | 2011-06-25 08:18:30.676202 | 2011-06-25 17:18:30.676202 >>> (5 rows) > _______________________________________________ Pgpool-hackers mailing list Pgpool-hackers@pgfoundry.org http://pgfoundry.org/mailman/listinfo/pgpool-hackers