Re: BLOB / CLOB support in PostgreSQL - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: BLOB / CLOB support in PostgreSQL
Date
Msg-id 6570918c-7776-d217-6e15-52e8006cf15f@2ndquadrant.com
Whole thread Raw
In response to Re: BLOB / CLOB support in PostgreSQL  (Vladimir Sitnikov <sitnikov.vladimir@gmail.com>)
Responses Re: BLOB / CLOB support in PostgreSQL
List pgsql-hackers
On 2020-09-28 15:46, Vladimir Sitnikov wrote:
> The concerns to avoid "Clob maps to text" could be:
> a) Once the behavior is implemented, it is hard to change. That is 
> applications would rely on it (and it becomes a defacto standard), and 
> it would be hard to move to the proper "text with streaming API" datatype.
> b) If we make «clob is text», then people might start using 
> update/substring APIs (which is the primary motivation for Clob) without 
> realizing there’s full value update behind the scenes. Currently, they 
> can use setString/getString for text, and it is crystal clear that the 
> text is updated fully on every update.

When we added TOAST, we made the explicit decision to not add a "LONG" 
type but instead have the toasting mechanism transparent in all 
variable-length types.  And that turned out to be a very successful 
decision, because it allows this system to be used by all data types, 
not only one or two hardcoded ones.  Therefore, I'm very strongly of the 
opinion that if a streaming system of the sort you allude to were added, 
it would also be added transparently into the TOAST system.

The JDBC spec says

"""
An implementation of a Blob, Clob or NClob object may either be locator 
based or result in the object being fully materialized on the client.

By default, a JDBC driver should implement the Blob, Clob and NClob 
interfaces using the appropriate locator type. An application does not 
deal directly with the locator types that are defined in SQL.
"""

(A "locator" in SQL is basically what you might call a streaming handle.)

So yes, this encourages the implementation of locators.  But it also 
specifies that if you don't have locators, you can implement this using 
non-large-object types.


-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



pgsql-hackers by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: [PATCH] We install pg_regress and isolationtester but not pg_isolation_regress
Next
From: Dilip Kumar
Date:
Subject: Re: [HACKERS] logical decoding of two-phase transactions