[Pgpool-hackers] Heading to pgpool-II 3.1

Tatsuo Ishii ishii at sraoss.co.jp
Tue Jun 28 23:09:20 UTC 2011


I have committed the patches to CVS HEAD.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp

> 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)


More information about the Pgpool-hackers mailing list