Home  |  Linux  | Mysql  | PHP  | XML
From:Lukas Kahwe Smith Date:Wed Jul  9 13:30:05 2008
Subject:Re: [PDO] LOBs in pgsql
On 09.07.2008, at 05:20, Jeremy wrote:

> Looking through the pdo_pgsql code, I can see why this is:  it makes  
> a decision about LOB handling based on whether you are using the  
> "distant" (or oid) method, or the bytea column method.  If you are  
> using the former, it uses the appropriate functions to open a stream  
> resource to the object and all is good.  However, if you are using  
> the latter, it tries to allocate memory for the entire lob and  
> unescape it all at once.  Obviously, this fails miserably in my  
> case, or I wouldn't be posting here :-)
>
> I could increase the memory_limit to be larger than a LOB will ever  
> be.  But what if this were gigabytes?  Am I tied to the "distant"  
> method, which is not particularly relational and ignores all concept  
> of permissions?  I feel like the behavior should be able to be  
> overridden in the driver options or some such, but there is  
> obviously no way to do that.
>
> The true LOB (using the distant method) functions use the lo_*  
> functions from libpq behind the scenes, so obviously this is not  
> possible with bytea fields.  However, there must be some way to use  
> a buffered reader to avoid over-allocation here.


Its my understanding that this is simply the fault of PostgreSQL at  
this point, since they have not provided a streaming API for bytea.  
The only way to do it would be for us to emulate it, which I think is  
probably not a high priority given the general lack of ressources  
around PDO.

So unless you want to step up and do this ..

regards,
Lukas Kahwe Smith
mls@pooteeweet.org



Navigate in group php.pdo at sever news.php.net
Previous Next




  
© No Copyright
You are free to use Anything
Site Maintained by Zareef Ahmed
Powered By PHP Consultants