Re: Proposal: is_castable - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Proposal: is_castable
Date
Msg-id CAFj8pRBFvXAXm=3bW_SjWaHQOxf+Gj2=99_=PLEcwdb3FxwQEw@mail.gmail.com
Whole thread Raw
In response to Proposal: is_castable  (Michał Wadas <michalwadas@gmail.com>)
List pgsql-hackers
Hi

pá 3. 4. 2020 v 13:45 odesílatel Michał Wadas <michalwadas@gmail.com> napsal:
Currently there is no way to check if CAST will succeed.

Therefore I propose adding new function: is_castable

SELECT is_castable('foo' as time) // false
SELECT is_castable('123' as numeric) // true
SELECT is_castable(1.5 as int) // true
SELECT is_castable('1.5' as int) // false

Many users write their own functions:


Similar features are implemented in:
- SQL Server (as TRY_CONVERT)
- Oracle (as CONVERT([val] DEFAULT [expr] ON CONVERSION ERROR)

I would love to implement it myself, but my knowledge of C is superficial.

It's is interesting feature - and implementation can be very easy - but without enhancing type API this function can be pretty slow.

So there is a dilemma - simple implementation (few work) but possible very negative performance impact under higher load due work with savepoints, or much larger work (probably easy) without necessity to use safepoints.

Regards

Pavel

 

Thanks,
Michał Wadas

pgsql-hackers by date:

Previous
From: Michał Wadas
Date:
Subject: Proposal: is_castable
Next
From: Robert Haas
Date:
Subject: zombie connections