Numeric and Aggregate: transform node 107

Started by Michael Contzenover 26 years ago2 messages
#1Michael Contzen
mcontzen@dohle.com

Hallo,

first of all, thank you for fixing the ´hash table overflow problem´, I´ve tested it on a join between a 2GB and a 3MB table, it works!

Now, I tried to use the numeric type, and hit the following problem:

create table a (val numeric(10,2));
CREATE
insert into a values('123.45');
INSERT 2402633 1

create table b (val numeric(10,2));
CREATE

insert into b select sum(val) into b;
ERROR: transformExpr: does not know how to transform node 107

insert into b select float8(sum(val)) into b;
INSERT 2402643 1

One other (SQL-) question: How can I cast results to numeric directly? Using float8 cast and the following implicit cast is not very nice.

Kind regards,

Michael Contzen
Dohle Systemberatung, Germany
Email: mcontzen@dohle.com

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Michael Contzen (#1)
Re: [HACKERS] Numeric and Aggregate: transform node 107

Michael Contzen <mcontzen@dohle.com> writes:

insert into b select sum(val) into b;
ERROR: transformExpr: does not know how to transform node 107

I fixed that error a few days ago (the parser wasn't coping with
implicit type coercion of aggregates). It works here:

regression=> insert into b select sum(val) into b;
INSERT 540179 1

I'm a little confused about why this statement is allowed, though;
shouldn't it read 'insert into b select sum(val) FROM a'?

I'm not sure what the parser thought it was doing --- there's no
need for a type coercion if it's computing a sum() of a numeric
column and putting the result in another numeric column, so I have
a suspicion that the parser read the statement as meaning something
else entirely.

regards, tom lane