Re: Insert into master table ->" 0 rows affected" -> Hibernate problems - Mailing list pgsql-general

From Magnus Hagander
Subject Re: Insert into master table ->" 0 rows affected" -> Hibernate problems
Date
Msg-id 48511F93.2040807@hagander.net
Whole thread Raw
In response to Re: Insert into master table ->" 0 rows affected" -> Hibernate problems  (<Mattias.Arbin@tietoenator.com>)
List pgsql-general
I think you could do overlapping CHECK constraints for the rules for a
very short period of time. Querying for just that time will hit both
partitions, so it won't be perfect from a performance standpoint, but it
 would only do that for a very small timeframe.

And I can certainly agree it's not ideal :-)

//Magnus


Mattias.Arbin@tietoenator.com wrote:
> Hm,
> Thanks again for helping out.
> I think it would be hard to live without the WHERE statemement in my
> case, since I will have a steady flow of inserts and need to have a
> partition ready when time passes a partition boundary. I would have to
> update the rule at the exact millisecond, wouldn't I?
>
> I still think it is a bit sad that I cannot find a partitioning solution
> that is completely transparent to my application, i.e. an application
> (in my case Hibernate) should not have to know/care if a table is
> partitioned or not.
>
> /Mattias
>
>> -----Original Message-----
>> From: Magnus Hagander [mailto:magnus@hagander.net]
>> Sent: den 11 juni 2008 10:43
>> To: Arbin Mattias
>> Cc: pgsql-general@postgresql.org
>> Subject: Re: [GENERAL] Insert into master table ->" 0 rows
>> affected" -> Hibernate problems
>>
>> Ah, in my testing I had a single RULE without a WHERE
>> statement. In that case it works. If I add a WHERE statement
>> to it, it no longer works. So it works for the case when you
>> always want to redirect all new inserts into the same partition.
>>
>> //Magnus
>>
>> Mattias.Arbin@tietoenator.com wrote:
>>> I tried using rules instead. I did something very similar to this:
>>> CREATE RULE measurement_insert_y2006m02 AS ON INSERT TO measurement
>>> WHERE
>>>     ( logdate >= DATE '2006-02-01' AND logdate < DATE
>> '2006-03-01' )
>>> DO INSTEAD
>>>     INSERT INTO measurement_y2006m02 VALUES (NEW.*); ...
>>> CREATE RULE measurement_insert_y2008m01 AS ON INSERT TO measurement
>>> WHERE
>>>     ( logdate >= DATE '2008-01-01' AND logdate < DATE
>> '2008-02-01' )
>>> DO INSTEAD
>>>     INSERT INTO measurement_y2008m01 VALUES (NEW.*);
>>>
>>> ... as descibed in the docs:
>>> http://www.postgresql.org/docs/8.3/interactive/ddl-partitioning.html
>>>
>>> Unfortunately, I still get
>>> "Query returned successfully: 0 rows affected, 16 ms
>> execution time."
>>> /Mattias
>>>
>>>
>>>
>>>> -----Original Message-----
>>>> From: pgsql-general-owner@postgresql.org
>>>> [mailto:pgsql-general-owner@postgresql.org] On Behalf Of Magnus
>>>> Hagander
>>>> Sent: den 10 juni 2008 10:43
>>>> To: Arbin Mattias
>>>> Cc: scott.marlowe@gmail.com; pgsql-general@postgresql.org
>>>> Subject: Re: [GENERAL] Insert into master table ->" 0 rows
>> affected"
>>>> -> Hibernate problems
>>>>
>>>> I think that if you use a RULE instead of a TRIGGER to
>> redirect the
>>>> write, it should return the proper number of rows inserted in the
>>>> child table.
>>>>
>>>> //Magnus
>>>>
>>>>
>>>> Mattias.Arbin@tietoenator.com wrote:
>>>>> Scott,
>>>>> You're right, of course. I meant, is there a way to make Postgres
>>>>> return the number of rows inserted to any child table _via_
>>>> the master
>>>>> table + trigger function?
>>>>> I have not been able to find a way to tell Hibernate to
>> ignore the
>>>>> returned number of rows, unless I insert via a custom
>>>> insert statement.
>>>>> /Mattias
>>>>>
>>>>> -----Original Message-----
>>>>> From: Scott Marlowe [mailto:scott.marlowe@gmail.com]
>>>>> Sent: den 5 juni 2008 02:01
>>>>> To: Arbin Mattias
>>>>> Cc: pgsql-general@postgresql.org
>>>>> Subject: Re: [GENERAL] Insert into master table ->" 0 rows
>>>> affected"
>>>>> -> Hibernate problems
>>>>>
>>>>> On Tue, Jun 3, 2008 at 7:38 AM,
>>>> <Mattias.Arbin@tietoenator.com> wrote:
>>>>>> I have implemented partitioning using inheritance following the
>>>>>> proposed solution here (using trigger):
>>>>>>
>> http://www.postgresql.org/docs/8.3/interactive/ddl-partitioning.html
>>>>>> My problem is that when my Hibernate application inserts to the
>>>>>> master table, postgres returns "0 rows affected", which causes
>>>> Hibernate to
>>>>>> throw an exception since it expects the returned row count to be
>>>>>> equal to the number of rows inserted.
>>>>>>
>>>>>> Is there a solution to this, i.e. to get Postgres to return the
>>>>>> correct number of rows inserted to the master table?
>>>>> PostgreSQL IS reporting the correct number of rows inserted
>>>> into the
>>>>> master table.  0.
>>>>>
>>>>> There's some setting in hibernate that will tell it to
>> ignore that
>>>>> returned number of rows, but I can't remember it right now.
>>>>>
>>>> --
>>>> Sent via pgsql-general mailing list
>>>> (pgsql-general@postgresql.org) To make changes to your
>> subscription:
>>>> http://www.postgresql.org/mailpref/pgsql-general
>>>>
>>


pgsql-general by date:

Previous
From: Zoltan Boszormenyi
Date:
Subject: Re: Heavily fragmented table and index data in 8.0.3
Next
From: Adam Dear
Date:
Subject: Re: Unable to dump database using pg_dump