Re: Spurious errors relating to escaped single quotes - Mailing list pgsql-bugs
From | Gavin Flower |
---|---|
Subject | Re: Spurious errors relating to escaped single quotes |
Date | |
Msg-id | 4E1FFA47.20501@archidevsys.co.nz Whole thread Raw |
In response to | Re: Spurious errors relating to escaped single quotes (Gavin Flower <GavinFlower@archidevsys.co.nz>) |
Responses |
Re: Spurious errors relating to escaped single quotes
|
List | pgsql-bugs |
On 15/07/11 11:25, Gavin Flower wrote: > On 15/07/11 08:00, Gavin Flower wrote: >> On 15/07/11 07:14, Tom Lane wrote: >>> Alvaro Herrera<alvherre@commandprompt.com> writes: >>>> Excerpts from Gavin Flower's message of jue jul 14 07:45:00 -0400 >>>> 2011: >>>>> Using pg 9.1beta3, I was found that running a function generated an >>>>> error relating to escaped single quotes, yet still produced the >>>>> answer I >>>>> expected! >>>> The errors are not spurious. The function doesn't exist now >>>> because it >>>> didn't get created. What happened is that now your inserts are going >>>> into the parent table, not the partitions as your script intended. >>> Possibly a more useful answer is "your function appears to be assuming >>> that standard_conforming_strings is OFF. As of 9.1 it's ON by >>> default". >>> >>> regards, tom lane >> Thanks Tom (& Alvera), >> >> I checked my postgresql.conf: >> standard_conforming_strings = off >> >> I had forgotten I had changed this, and had simply reussed it from >> earlier! >> >> The silly thing is, that I had been treading up on partitioned tables >> and had come across a comment about mistakes could lead to populating >> the parent table! >> >> If I could change the sunject of thread, I would change it to start >> with 'Misleading...'. >> >> My lawyer siuggests defences of 'tiredness due ti it being late at >> night' and 'poor eyesight'! :-) >> (You can tell I've been reading groklaw.net way too much)) >> >> More seriously: >> Could a hint be put in after the error message: >> 'psql:part000.sql:68: ERROR: function measurement_insert_trigger() >> does not exist' >> when the table has been partitioned, along the lines that 'this might >> cause inserts to go into the parent table, is this intended?' or some >> such? I am sure many others also get caught. This was purely an >> exercise for me, but it would be more serious in production code (yes >> I know things 'should' be tested properly first...). >> >> >> Cheers, >> Gavin > I think it should be possible to put a constraint on the master table > to prevent rows being inserted. > > I was able to do this with a nasty hack: > > CREATE TABLE measurement > ( > city_id int not null, > logdate date not null, > peaktemp int, > unitsales int, > CONSTRAINT nothing_allowed_in_master CHECK (city_id::text = > logdate::text) > ); > > But I think it would be better if the EXCLUDE' clause could take a > value 'ALL' or 'EVERYTHING', to exclude everything - this would be > simpler, more universally valid (convenient columns for such a nasty > hack may not always be available), and be better documentation. If > that was implented, I could then rewrite the above as: > > CREATE TABLE measurement > ( > city_id int not null, > logdate date not null, > peaktemp int, > unitsales int, > CONSTRAINT nothing_allowed_in_master EXCLUDE EVERYTHING > ); > > Cheers, > Gavin > Of course, minutes after I sent the above - I realized these constraints are inherited, so the above is nonsense! :-(
pgsql-bugs by date: