[BUGS] BUG #2671: incorrect return value by RULE

2006-10-03 Thread Toru SHIMOGAKI

The following bug has been logged online:

Bug reference:  2671
Logged by:  Toru SHIMOGAKI
Email address:  [EMAIL PROTECTED]
PostgreSQL version: 8.1.4/8.2beta1
Operating system:   Red Hat Enterprise Linux AS4
Description:incorrect return value by RULE
Details: 

Hi, all;

It seems a bug that incorrect return value is displayed if RULE is applied
(RULE is always used when users use table partitioning). This is undesirable
for some users and applications that want to check return value. 


The following is the procedure:

=

postgres=# \d test_p;
Table public.test_p
 Column |  Type   | Modifiers
+-+---
 a  | integer |
Rules:
rule_1 AS
ON INSERT TO test_p
   WHERE new.a = 0 DO INSTEAD  INSERT INTO test_c1 (a)
  VALUES (new.a)
rule_2 AS
ON INSERT TO test_p
   WHERE new.a  0 DO INSTEAD  INSERT INTO test_c2 (a)
  VALUES (new.a)

postgres=# \d test_c1;
Table public.test_c1
 Column |  Type   | Modifiers
+-+---
 a  | integer |
Inherits: test_p

postgres=# \d test_c2;
Table public.test_c2
 Column |  Type   | Modifiers
+-+---
 a  | integer |
Inherits: test_p

postgres=# INSERT INTO test_p VALUES (1);
INSERT 0 0
^^^ The expected result is INSERT 0 1

=


At least, this behavior is different from the following discription of
INSERT manual;


=

...

Outputs

On successful completion, an INSERT command returns a command tag of the
form

INSERT oid count

The count is the number of rows inserted. If count is exactly one, and the
target table has OIDs, then oid is the OID assigned to the inserted row.
Otherwise oid is zero. 

...
=

We need some specifications to solve this problem. I think that to fix it
seems not so easy, because RULE has DO ALSO/DO INSTEAD and we have to
consider them for a query multiple RULES are applied.

Are there any good ideas to avoid or fix it?


Best regards, 


-- 
Toru SHIMOGAKI[EMAIL PROTECTED]
NTT Open Source Software Center

---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


Re: [BUGS] BUG #2671: incorrect return value by RULE

2006-10-03 Thread Tom Lane
Toru SHIMOGAKI [EMAIL PROTECTED] writes:
 It seems a bug that incorrect return value is displayed if RULE is applied
 (RULE is always used when users use table partitioning). This is undesirable
 for some users and applications that want to check return value. 

This is the long-ago-agreed-to behavior, see

http://www.postgresql.org/docs/8.1/static/rules-status.html

regards, tom lane

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [BUGS] BUG #2671: incorrect return value by RULE

2006-10-03 Thread Simon Riggs
On Tue, 2006-10-03 at 11:04 -0400, Tom Lane wrote:
 Toru SHIMOGAKI [EMAIL PROTECTED] writes:
  It seems a bug that incorrect return value is displayed if RULE is applied
  (RULE is always used when users use table partitioning). This is undesirable
  for some users and applications that want to check return value. 
 
 This is the long-ago-agreed-to behavior, see
 
 http://www.postgresql.org/docs/8.1/static/rules-status.html
 

Understood this is not-a-bug, but it is an opportunity for the TODO.

IMHO when we have a set of mutually exclusive conditional RULEs that it
would be possible to identify the correct return value and display it.
Or another way would be to have a CASE statement instead of a WHERE
clause to allow one of many outcomes to occur.

I'm not that excited about the usefulness of using RULEs with
partitioning, as you know, but it does seem as if everybody else *is*.

-- 
  Simon Riggs 
  EnterpriseDB   http://www.enterprisedb.com


---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [BUGS] BUG #2671: incorrect return value by RULE

2006-10-03 Thread Tom Lane
Simon Riggs [EMAIL PROTECTED] writes:
 On Tue, 2006-10-03 at 11:04 -0400, Tom Lane wrote:
 This is the long-ago-agreed-to behavior, see
 http://www.postgresql.org/docs/8.1/static/rules-status.html

 Understood this is not-a-bug, but it is an opportunity for the TODO.

 IMHO when we have a set of mutually exclusive conditional RULEs that it
 would be possible to identify the correct return value and display it.

What makes you think there is a single correct return value?  If
multiple rows are being inserted/updated it's entirely possible that
some of them will be in different child partitions.

If we were interested in changing the status behavior, I'd be inclined
to think about something like adding up the rowcounts from all the
replacement queries that're of the same type as the original.  However,
I have some recollection that this was proposed and shot down in the
discussions that led to the current solution --- as a counterexample
consider an ON INSERT DO ALSO that inserts rows into a logging table.
This should be hidden from the user but would not be if we added its
effects to the result tag.

regards, tom lane

---(end of broadcast)---
TIP 1: if posting/reading through Usenet, please send an appropriate
   subscribe-nomail command to [EMAIL PROTECTED] so that your
   message can get through to the mailing list cleanly


Re: [BUGS] BUG #2671: incorrect return value by RULE

2006-10-03 Thread Simon Riggs
On Tue, 2006-10-03 at 13:56 -0400, Tom Lane wrote:
 Simon Riggs [EMAIL PROTECTED] writes:
  On Tue, 2006-10-03 at 11:04 -0400, Tom Lane wrote:
  This is the long-ago-agreed-to behavior, see
  http://www.postgresql.org/docs/8.1/static/rules-status.html
 
  Understood this is not-a-bug, but it is an opportunity for the TODO.
 
  IMHO when we have a set of mutually exclusive conditional RULEs that it
  would be possible to identify the correct return value and display it.
 
 What makes you think there is a single correct return value?  If
 multiple rows are being inserted/updated it's entirely possible that
 some of them will be in different child partitions.
 
 If we were interested in changing the status behavior, I'd be inclined
 to think about something like adding up the rowcounts from all the
 replacement queries that're of the same type as the original.  However,
 I have some recollection that this was proposed and shot down in the
 discussions that led to the current solution --- as a counterexample
 consider an ON INSERT DO ALSO that inserts rows into a logging table.
 This should be hidden from the user but would not be if we added its
 effects to the result tag.

Good point, and you make me feel better about ignoring that since.

Those thoughts inch forward the idea that partitions aren't quite on the
same level as full tables, even if they have many similarities.

-- 
  Simon Riggs 
  EnterpriseDB   http://www.enterprisedb.com


---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


[BUGS] drop view stalled during pg_dump

2006-10-03 Thread SeattleServer.com
Hi guys,

I just tried to do a drop view and it sat there for ages.  I looked to see 
what else was going on and the only other thing of note was a COPY process 
being run as part of my daily backups (pg_dump).

Why does this block drop view?  It seems as though it shouldn't.

Cheers,
-- 
SeattleServer.com Mailing Lists - Casey Allen Shobe
[EMAIL PROTECTED] - http://seattleserver.com

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
   choose an index scan if your joining column's datatypes do not
   match