Re: [HACKERS] A select with aggretion is failing, still subtle problems with aggregation

Started by Tom Lanealmost 27 years ago4 messageshackers
Jump to latest
#1Tom Lane
tgl@sss.pgh.pa.us

Michael J Davis <michael.j.davis@tvguide.com> writes:

The following select fails:

select invoiceid + 3 as type, memberid, 1, max(TotShippingHandling)
from InvoiceLineDetails
where TotShippingHandling <> 0
group by type, memberid limit 10;

ERROR: replace_agg_clause: variable not in target list

Yeah, "GROUP BY" on anything but a primitive column is still pretty
hosed. I'm going to try to work on it this weekend.

regards, tom lane

#2Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)
cache startup file

Just one more question. If you remove the cache file so the next
backend creates it, could their be problems if another backend starts
while the file is being created by another backend?

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#2)
Re: cache startup file

Bruce Momjian <maillist@candle.pha.pa.us> writes:

That sounds like a big win. 1/3 second is large. If they vacuum a
single table, and it is not a system table, can the removal be
skipped?

I didn't do that; I just put an unconditional remove into vac_shutdown.
If you want to improve on that, be my guest ;-).

Just one more question. If you remove the cache file so the next
backend creates it, could their be problems if another backend starts
while the file is being created by another backend?

The code in relcache.c looks to be fairly robust --- if the file seems
to be broken (ie, ends early) it will go off and rebuild the file.
So I suppose you could get an extra rebuild in that scenario.

If you wanted to be really paranoid you could have the writing code
create the file under a temporary name (using the backend's PID) and
rename it into place when done; that'd prevent any kind of worry about
the wrong things happening if two backends write the file at the same
time. But really, it shouldn't matter.

regards, tom lane

#4Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#1)

Is this done? I have added it to the list.

Michael J Davis <michael.j.davis@tvguide.com> writes:

The following select fails:

select invoiceid + 3 as type, memberid, 1, max(TotShippingHandling)
from InvoiceLineDetails
where TotShippingHandling <> 0
group by type, memberid limit 10;

ERROR: replace_agg_clause: variable not in target list

Yeah, "GROUP BY" on anything but a primitive column is still pretty
hosed. I'm going to try to work on it this weekend.

regards, tom lane

-- 
  Bruce Momjian                        |  http://www.op.net/~candle
  maillist@candle.pha.pa.us            |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026