mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-11-04 01:37:31 +03:00 
			
		
		
		
	Added documentation about the lo64 support
This commit is contained in:
		
							parent
							
								
									bc5e2aeead
								
							
						
					
					
						commit
						c008f9d1ce
					
				| 
						 | 
				
			
			@ -40,18 +40,20 @@ functionalities defined by the |DBAPI|_.
 | 
			
		|||
 | 
			
		||||
    The class can be subclassed: see the `connection.lobject()` to know
 | 
			
		||||
    how to specify a `!lobject` subclass.
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    .. versionadded:: 2.0.8
 | 
			
		||||
 | 
			
		||||
    .. attribute:: oid
 | 
			
		||||
 | 
			
		||||
        Database OID of the object.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. attribute:: mode
 | 
			
		||||
 | 
			
		||||
        The mode the database was open. See `connection.lobject()` for a
 | 
			
		||||
        description of the available modes.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: read(bytes=-1)
 | 
			
		||||
 | 
			
		||||
        Read a chunk of data from the current file position. If -1 (default)
 | 
			
		||||
| 
						 | 
				
			
			@ -64,6 +66,7 @@ functionalities defined by the |DBAPI|_.
 | 
			
		|||
        .. versionchanged:: 2.4
 | 
			
		||||
            added Unicode support.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: write(str)
 | 
			
		||||
 | 
			
		||||
        Write a string to the large object. Return the number of bytes
 | 
			
		||||
| 
						 | 
				
			
			@ -73,42 +76,60 @@ functionalities defined by the |DBAPI|_.
 | 
			
		|||
        .. versionchanged:: 2.4
 | 
			
		||||
            added Unicode support.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: export(file_name)
 | 
			
		||||
 | 
			
		||||
        Export the large object content to the file system.
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        The method uses the efficient |lo_export|_ libpq function.
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        .. |lo_export| replace:: `!lo_export()`
 | 
			
		||||
        .. _lo_export: http://www.postgresql.org/docs/current/static/lo-interfaces.html#LO-EXPORT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: seek(offset, whence=0)
 | 
			
		||||
 | 
			
		||||
        Set the lobject current position.
 | 
			
		||||
 | 
			
		||||
        .. versionchanged:: 2.6.0
 | 
			
		||||
            added support for *offset* > 2GB.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: tell()
 | 
			
		||||
 | 
			
		||||
        Return the lobject current position.
 | 
			
		||||
 | 
			
		||||
    .. method:: truncate(len=0)
 | 
			
		||||
 | 
			
		||||
        .. versionadded:: 2.2.0
 | 
			
		||||
 | 
			
		||||
        .. versionchanged:: 2.6.0
 | 
			
		||||
            added support for return value > 2GB.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    .. method:: truncate(len=0)
 | 
			
		||||
 | 
			
		||||
        Truncate the lobject to the given size.
 | 
			
		||||
 | 
			
		||||
        The method will only be available if Psycopg has been built against libpq
 | 
			
		||||
        from PostgreSQL 8.3 or later and can only be used with PostgreSQL servers
 | 
			
		||||
        running these versions. It uses the |lo_truncate|_ libpq function.
 | 
			
		||||
        The method will only be available if Psycopg has been built against
 | 
			
		||||
        libpq from PostgreSQL 8.3 or later and can only be used with
 | 
			
		||||
        PostgreSQL servers running these versions. It uses the |lo_truncate|_
 | 
			
		||||
        libpq function.
 | 
			
		||||
 | 
			
		||||
        .. |lo_truncate| replace:: `!lo_truncate()`
 | 
			
		||||
        .. _lo_truncate: http://www.postgresql.org/docs/current/static/lo-interfaces.html#LO-TRUNCATE
 | 
			
		||||
 | 
			
		||||
        .. warning::
 | 
			
		||||
        .. versionadded:: 2.2.0
 | 
			
		||||
 | 
			
		||||
        .. versionchanged:: 2.6.0
 | 
			
		||||
            added support for *len* > 2GB.
 | 
			
		||||
 | 
			
		||||
    .. warning::
 | 
			
		||||
 | 
			
		||||
        If Psycopg is built with |lo_truncate| support or with the 64 bits API
 | 
			
		||||
        support (resp. from PostgreSQL versions 8.3 and 9.3) but at runtime an
 | 
			
		||||
        older version of the dynamic library is found, the ``psycopg2`` module
 | 
			
		||||
        will fail to import.  See :ref:`the lo_truncate FAQ <faq-lo_truncate>`
 | 
			
		||||
        about the problem.
 | 
			
		||||
 | 
			
		||||
            If Psycopg is built with |lo_truncate| support (i.e. if the
 | 
			
		||||
            :program:`pg_config` used during setup is version >= 8.3), but at
 | 
			
		||||
            runtime an older libpq is found, Psycopg will fail to import.  See
 | 
			
		||||
            :ref:`the lo_truncate FAQ <faq-lo_truncate>` about the problem.
 | 
			
		||||
 | 
			
		||||
    .. method:: close()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -248,13 +248,20 @@ I can't compile `!psycopg2`: the compiler says *error: libpq-fe.h: No such file
 | 
			
		|||
.. cssclass:: faq
 | 
			
		||||
 | 
			
		||||
`!psycopg2` raises `!ImportError` with message *_psycopg.so: undefined symbol: lo_truncate* when imported.
 | 
			
		||||
    This means that Psycopg has been compiled with |lo_truncate|_ support,
 | 
			
		||||
    which means that the libpq used at compile time was version >= 8.3, but at
 | 
			
		||||
    runtime an older libpq library is found. You can use::
 | 
			
		||||
    This means that Psycopg was compiled with |lo_truncate|_ support (*i.e.*
 | 
			
		||||
    the libpq used at compile time was version >= 8.3) but at runtime an older
 | 
			
		||||
    libpq dynamic library is found.
 | 
			
		||||
 | 
			
		||||
    Fast-forward several years, if the message reports *undefined symbol:
 | 
			
		||||
    lo_truncate64* it means that Psycopg was built with large objects 64 bits
 | 
			
		||||
    API support (*i.e.* the libpq used at compile time was at least 9.3) but
 | 
			
		||||
    at runtime an older libpq dynamic library is found.
 | 
			
		||||
 | 
			
		||||
    You can use::
 | 
			
		||||
 | 
			
		||||
        $ ldd /path/to/packages/psycopg2/_psycopg.so | grep libpq
 | 
			
		||||
 | 
			
		||||
    to find what is the version used at runtime.
 | 
			
		||||
    to find what is the libpq dynamic library used at runtime.
 | 
			
		||||
 | 
			
		||||
    You can avoid the problem by using the same version of the
 | 
			
		||||
    :program:`pg_config` at install time and the libpq at runtime.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -899,6 +899,18 @@ using the |lo_import|_ and |lo_export|_ libpq functions.
 | 
			
		|||
.. |lo_export| replace:: `!lo_export()`
 | 
			
		||||
.. _lo_export: http://www.postgresql.org/docs/current/static/lo-interfaces.html#LO-EXPORT
 | 
			
		||||
 | 
			
		||||
.. versionchanged:: 2.6
 | 
			
		||||
    added support for large objects greated than 2GB. Note that the support is
 | 
			
		||||
    enabled only if both these conditions are verified:
 | 
			
		||||
 | 
			
		||||
    - the extension was built against libpq at least 9.3 (you can check if
 | 
			
		||||
      `psycopg2.__version__` contains the ``lo64`` flag);
 | 
			
		||||
    - the server version is at least PostgreSQL 9.3
 | 
			
		||||
      (`~connection.server_version` must be >= ``90300``).
 | 
			
		||||
 | 
			
		||||
    If the contitions are not met several `!lobject` methods will fail if the
 | 
			
		||||
    arguments exceed 2GB.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.. index::
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user