Re: extend pgbench expressions with functions - Mailing list pgsql-hackers

From Fabien COELHO
Subject Re: extend pgbench expressions with functions
Date
Msg-id alpine.DEB.2.10.1509182019100.27223@sto
Whole thread Raw
In response to Re: extend pgbench expressions with functions  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: extend pgbench expressions with functions  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
List pgsql-hackers
> -1.  double is an inexact type, whereas integer is an exact type.

Sure. I already argue on that very line.

> The typical way to handle this sort of thing is to define a struct
> whose first member is a type field and whose second field is a union
> of all the types you need to care about.

Yep.

> Then that gets passed around everywhere.  This patch should be designed 
> in such a way that if we eventually end up with functions that have 10 
> different return types instead of 2 different return types, we don't 
> need to add 8 more parameters to any functions.  Instead, those still 
> return PgBench_Value (or whatever we call it) which is the 
> aforementioned struct, but there are more options for what that can 
> contain.

I just put the double type as a proof of concept, but for pgbench only 
integers really matters.

What you suggest would work, but it would also result in ugly and lengthy 
code, as I argued in another mail, because you have to decide for 
overloaded operators and functions which actual typed operator must be 
called, and then perform the necessary type conversions depending on the 
actual type of the operands. The implicit descendent typing used in the 
patch hides this, and is more than enough for pgbench, IMO.

If this is a blocker, I would rather remove the support for doubles than 
write verbose and inelegant code.

-- 
Fabien.



pgsql-hackers by date:

Previous
From: Jesper Pedersen
Date:
Subject: Re: Reducing ClogControlLock contention
Next
From: Robert Haas
Date:
Subject: Re: Parallel Seq Scan