亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lobj.sgml

?? PostgreSQL7.4.6 for Linux
?? SGML
?? 第 1 頁 / 共 2 頁
字號:
<!--$Header: /cvsroot/pgsql/doc/src/sgml/lobj.sgml,v 1.31.2.1 2003/11/12 20:05:14 petere Exp $--> <chapter id="largeObjects">  <title id="largeObjects-title">Large Objects</title>  <indexterm zone="largeobjects"><primary>large object</></>  <indexterm><primary>BLOB</><see>large object</></>   <para>    In <productname>PostgreSQL</productname> releases prior to 7.1,    the size of any row in the database could not exceed the size of a    data page.  Since the size of a data page is 8192 bytes (the    default, which can be raised up to 32768), the upper limit on the    size of a data value was relatively low. To support the storage of    larger atomic values, <productname>PostgreSQL</productname>    provided and continues to provide a large object interface.  This    interface provides file-oriented access to user data that is stored in    a special large-object structure.   </para>   <para>    This chapter describes the implementation and the programming and    query language interfaces to <productname>PostgreSQL</productname>    large object data.  We use the <application>libpq</application> C    library for the examples in this chapter, but most programming    interfaces native to <productname>PostgreSQL</productname> support    equivalent functionality.  Other interfaces may use the large    object interface internally to provide generic support for large    values.  This is not described here.   </para>  <sect1 id="lo-history">   <title>History</title>   <para>    <productname>POSTGRES 4.2</productname>, the indirect predecessor    of <productname>PostgreSQL</productname>, supported three standard    implementations of large objects: as files external to the    <productname>POSTGRES</productname> server, as external files    managed by the <productname>POSTGRES</productname> server, and as    data stored within the <productname>POSTGRES</productname>    database. This caused considerable confusion among users. As a    result, only support for large objects as data stored within the    database is retained in <productname>PostgreSQL</productname>.    Even though this is slower to access, it provides stricter data    integrity.  For historical reasons, this storage scheme is    referred to as <firstterm>Inversion large    objects</firstterm>. (You will see the term Inversion used    occasionally to mean the same thing as large object.)  Since    <productname>PostgreSQL 7.1</productname>, all large objects are    placed in one system table called    <classname>pg_largeobject</classname>.   </para>   <para>    <indexterm><primary>TOAST</></>    <indexterm><primary>sliced bread</><see>TOAST</></indexterm>    <productname>PostgreSQL 7.1</productname> introduced a mechanism    (nicknamed <quote><acronym>TOAST</acronym></quote>) that allows    data rows to be much larger than individual data pages.  This    makes the large object interface partially obsolete.  One    remaining advantage of the large object interface is that it allows values up    to 2 GB in size, whereas <acronym>TOAST</acronym> can only handle 1 GB.   </para>  </sect1>  <sect1 id="lo-implementation">   <title>Implementation Features</title>   <para>    The large object implementation breaks  large    objects  up  into  <quote>chunks</quote>  and  stores  the chunks in    rows in the database.  A B-tree index guarantees fast    searches for the correct chunk number when doing random    access reads and writes.   </para>  </sect1>  <sect1 id="lo-interfaces">   <title>Client Interfaces</title>   <para>    This section describes the facilities that    <productname>PostgreSQL</productname> client interface libraries    provide for accessing large objects.  All large object    manipulation using these functions <emphasis>must</emphasis> take    place within an SQL transaction block.  (This requirement is    strictly enforced as of <productname>PostgreSQL 6.5</>, though it    has been an implicit requirement in previous versions, resulting    in misbehavior if ignored.)    The  <productname>PostgreSQL</productname>  large  object interface is modeled after    the <acronym>Unix</acronym>  file-system  interface,  with  analogues  of    <function>open</function>,  <function>read</function>,    <function>write</function>,    <function>lseek</function>, etc.   </para>   <para>    Client applications which use the large object interface in    <application>libpq</application> should include the header file    <filename>libpq/libpq-fs.h</filename> and link with the    <application>libpq</application> library.   </para>   <sect2>    <title>Creating a Large Object</title>    <para>     The function<synopsis>Oid lo_creat(PGconn *conn, int mode);</synopsis>     <indexterm><primary>lo_creat</></>     creates a new large  object.       <replaceable class="parameter">mode</replaceable>  is  a  bit mask     describing  several  different  attributes  of  the new     object.  The symbolic constants listed here are defined     in the header file <filename>libpq/libpq-fs.h</filename>.     The access type (read, write, or both) is controlled by     or'ing together the bits <symbol>INV_READ</symbol>  and     <symbol>INV_WRITE</symbol>.  The low-order sixteen bits of the mask have     historically been used at Berkeley to designate the storage  manager  number on which the large object     should reside.  These     bits should always be zero now.     The return value is the OID that was assigned to the new large object.    </para>    <para>     An example:<programlisting>inv_oid = lo_creat(INV_READ|INV_WRITE);</programlisting>    </para>   </sect2>   <sect2>    <title>Importing a Large Object</title>    <para>     To import an operating system file as a large object, call<synopsis>Oid lo_import(PGconn *conn, const char *filename);</synopsis>     <indexterm><primary>lo_import</></>     <replaceable class="parameter">filename</replaceable>      specifies the operating system name of     the file to be imported as a large object.     The return value is the OID that was assigned to the new large object.    </para>   </sect2>   <sect2>    <title>Exporting a Large Object</title>    <para>     To export a large object     into an operating system file, call<synopsis>int lo_export(PGconn *conn, Oid lobjId, const char *filename);</synopsis>     <indexterm><primary>lo_export</></>     The <parameter>lobjId</parameter> argument specifies  the  OID  of  the  large     object  to  export  and the <parameter>filename</parameter> argument specifies     the operating system name name of the file.    </para>   </sect2>   <sect2>    <title>Opening an Existing Large Object</title>    <para>     To open an existing large object, call<synopsis>int lo_open(PGconn *conn, Oid lobjId, int mode);</synopsis>     <indexterm><primary>lo_open</></>     The <parameter>lobjId</parameter> argument specifies  the  OID  of  the  large     object  to  open.   The  <parameter>mode</parameter>  bits control whether the     object is opened  for  reading  (<symbol>INV_READ</>),  writing (<symbol>INV_WRITE</symbol>),  or     both.     A  large  object cannot be opened before it is created.     <function>lo_open</function> returns a large object descriptor     for later use in <function>lo_read</function>, <function>lo_write</function>,     <function>lo_lseek</function>, <function>lo_tell</function>, and     <function>lo_close</function>.  The descriptor is only valid for     the duration of the current transaction.</para></sect2><sect2><title>Writing Data to a Large Object</title><para>     The function<synopsis>int lo_write(PGconn *conn, int fd, const char *buf, size_t len);</synopsis>     <indexterm><primary>lo_write</></> writes     <parameter>len</parameter> bytes from <parameter>buf</parameter>     to large object <parameter>fd</>.  The <parameter>fd</parameter>     argument must have been returned by a previous     <function>lo_open</function>.  The number of bytes actually     written is returned.  In the event of an error, the return value     is negative.</para></sect2><sect2><title>Reading Data from a Large Object</title><para>     The function<synopsis>int lo_read(PGconn *conn, int fd, char *buf, size_t len);</synopsis>     <indexterm><primary>lo_read</></> reads     <parameter>len</parameter> bytes from large object     <parameter>fd</parameter> into <parameter>buf</parameter>. The     <parameter>fd</parameter> argument must have been returned by a     previous <function>lo_open</function>.  The number of bytes     actually read is returned. In the event of an error, the return     value is negative.</para></sect2><sect2><title>Seeking on a Large Object</title><para>     To change the current read or write location on a large     object, call<synopsis>int lo_lseek(PGconn *conn, int fd, int offset, int whence);</synopsis>     <indexterm><primary>lo_lseek</></> This function moves the     current location pointer for the large object described by     <parameter>fd</> to the new location specified by     <parameter>offset</>.  The valid values for <parameter>whence</>     are <symbol>SEEK_SET</> (seek from object start),     <symbol>SEEK_CUR</> (seek from current position), and     <symbol>SEEK_END</> (seek from object end).  The return value is     the new location pointer.</para></sect2><sect2><title>Obtaining the Seek Position of a Large Object</title><para>     To obtain the current read or write location of a large object,     call<synopsis>int lo_tell(PGconn *conn, int fd);</synopsis>     <indexterm><primary>lo_tell</></> If there is an error, the     return value is negative.</para></sect2><sect2><title>Closing a Large Object Descriptor</title><para>     A large object may be closed by calling<synopsis>int lo_close(PGconn *conn, int fd);</synopsis>     <indexterm><primary>lo_close</></> where <parameter>fd</> is a     large object descriptor returned by <function>lo_open</function>.     On success, <function>lo_close</function> returns zero.  On     error, the return value is negative.</para><para>     Any large  object  descriptors that remain open at the end of a     transaction will be closed automatically.</para></sect2>   <sect2>    <title>Removing a Large Object</title>    <para>     To remove a large object from the database, call<synopsis>int lo_unlink(PGconn *conn, Oid lobjId);</synopsis>     <indexterm><primary>lo_unlink</></> The     <parameter>lobjId</parameter> argument specifies the OID of the     large object to remove.  In the event of an error, the return     value is negative.    </para>   </sect2></sect1><sect1 id="lo-funcs"><title>Server-Side Functions</title><para>     There are two built-in server-side functions,     <function>lo_import</function><indexterm><primary>lo_import</></>     and     <function>lo_export</function>,<indexterm><primary>lo_export</></>     for large object access, which are available for use in     <acronym>SQL</acronym> commands.  Here is an example of their

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区精品久久av| 成人丝袜高跟foot| 精品在线播放免费| 91老司机福利 在线| 91精品国产一区二区| 国产精品人成在线观看免费| 午夜精品一区在线观看| av电影天堂一区二区在线| 日韩欧美中文字幕一区| 亚洲色图在线看| 狠狠色综合日日| 欧美高清视频在线高清观看mv色露露十八 | 国产精品高清亚洲| 国内成人精品2018免费看| 欧洲一区在线观看| 国产精品系列在线| 国产一本一道久久香蕉| 制服.丝袜.亚洲.中文.综合| 亚洲天堂2016| 国产传媒欧美日韩成人| 日韩精品一区在线| 亚洲午夜激情av| 色94色欧美sute亚洲线路一久 | 国产精品久久福利| 国产麻豆一精品一av一免费| 欧美精品少妇一区二区三区| 亚洲另类色综合网站| 成av人片一区二区| 国产日韩精品久久久| 蜜臀av亚洲一区中文字幕| 欧美日韩视频在线观看一区二区三区| 国产精品美女久久久久久2018 | 26uuu欧美| 久久91精品久久久久久秒播| 777亚洲妇女| 亚洲bdsm女犯bdsm网站| 欧美日韩中文一区| 日韩精品国产欧美| 欧美日韩激情一区二区三区| 一区二区日韩av| 91麻豆精品秘密| 亚洲男人的天堂av| 91国内精品野花午夜精品| 伊人婷婷欧美激情| 日本韩国一区二区三区| 一区二区三区国产精华| 欧美午夜片在线观看| 午夜激情久久久| 精品区一区二区| 国产一区福利在线| 国产精品激情偷乱一区二区∴| 国产不卡视频一区| 亚洲男同性恋视频| 欧美日韩国产一区二区三区地区| 亚洲国产精品自拍| 日韩一区二区三区高清免费看看| 美女视频一区二区三区| 久久综合九色欧美综合狠狠 | 美女视频黄 久久| 精品久久免费看| 99精品国产一区二区三区不卡| 18欧美乱大交hd1984| 欧美性猛交一区二区三区精品 | 亚洲同性同志一二三专区| 91网站视频在线观看| 亚洲成av人片在线| 欧美大胆一级视频| fc2成人免费人成在线观看播放| 悠悠色在线精品| 精品久久久久久久久久久久包黑料| 国产米奇在线777精品观看| 亚洲欧美日韩综合aⅴ视频| 欧美日韩国产综合草草| 久久国产尿小便嘘嘘尿| 亚洲欧美在线视频观看| 欧美日韩精品福利| 国产成人一级电影| 亚洲成人精品在线观看| 国产亚洲污的网站| 欧美日韩精品一区二区| 国产福利一区二区三区| 亚洲高清不卡在线| 亚洲欧洲精品天堂一级 | 欧美三级一区二区| 粉嫩一区二区三区性色av| 五月婷婷综合在线| 国产精品久久久一本精品| 日韩精品一区二区在线观看| 欧美三级资源在线| av中文字幕在线不卡| 精品一区二区免费| 日韩在线卡一卡二| 亚洲综合在线第一页| 日本一区二区三级电影在线观看 | 国产精品天天看| 欧美自拍偷拍午夜视频| 久久99精品久久久久久动态图| 一区二区三区蜜桃| 久久久精品国产免大香伊| 91美女在线观看| 久久精品国产亚洲高清剧情介绍 | 亚洲国产精品久久久男人的天堂| 日韩一区二区三区四区五区六区| 91久久免费观看| 卡一卡二国产精品| 亚洲精品少妇30p| 久久综合九色综合97婷婷女人| 欧美日韩国产美| 99精品视频一区| 国产精品99久久久久久有的能看| 亚洲自拍另类综合| 中文字幕不卡在线观看| 911精品国产一区二区在线| 日韩不卡一区二区| 亚洲国产wwwccc36天堂| 国产精品久久久久久亚洲毛片 | 国产福利精品一区| 六月丁香婷婷久久| 性做久久久久久久免费看| 国产午夜亚洲精品不卡| 国产欧美日韩卡一| xvideos.蜜桃一区二区| 91精品国产91久久综合桃花| 色狠狠一区二区三区香蕉| 国产成人a级片| 国产在线视频一区二区| 国产精品99久久久久久宅男| 久久99国产精品麻豆| 久久国产精品无码网站| 日韩av网站免费在线| 天堂成人免费av电影一区| 日本一区二区三区高清不卡| 亚洲私人黄色宅男| 国产精品久久久99| 亚洲欧洲av色图| 亚洲欧美aⅴ...| 一区二区在线电影| 一区二区三区国产| 亚洲高清久久久| 日韩精品电影一区亚洲| 亚洲一区二区欧美日韩| 日韩av中文字幕一区二区| 日本欧美一区二区| 亚洲成在人线免费| 日日噜噜夜夜狠狠视频欧美人| 亚洲成人福利片| 亚洲成a天堂v人片| 一区二区三区国产精华| 调教+趴+乳夹+国产+精品| 热久久国产精品| 国产精品主播直播| 成人听书哪个软件好| 91免费在线看| 欧美日韩国产免费一区二区 | 韩国成人在线视频| 国产精品18久久久久久vr| 国产999精品久久久久久| av福利精品导航| 欧美日韩成人综合| 欧美一区二区三区视频在线| 国产精品无遮挡| 亚洲一区二三区| 欧美aaa在线| 国产91丝袜在线观看| 91精品办公室少妇高潮对白| 欧美电视剧在线观看完整版| 国产日韩三级在线| 亚洲精品老司机| 日韩高清不卡一区二区三区| 国产乱人伦偷精品视频免下载| 九一久久久久久| 日本黄色一区二区| www国产精品av| 日韩毛片视频在线看| 天堂蜜桃一区二区三区| 国产成人午夜99999| 9191成人精品久久| 亚洲色图都市小说| 精品亚洲成av人在线观看| 成人黄色免费短视频| 欧美精品丝袜久久久中文字幕| 中文字幕欧美一区| 毛片不卡一区二区| 一本色道**综合亚洲精品蜜桃冫| 日韩欧美一级二级三级| 亚洲另类春色国产| 国内精品自线一区二区三区视频| 欧美日韩久久一区| 亚洲欧美日韩中文字幕一区二区三区 | 国产一级精品在线| 欧美精品 国产精品| 成人免费视频在线观看| 韩国女主播成人在线观看| 99天天综合性| 久久久天堂av| 久久国产精品区| 制服丝袜国产精品| 一级做a爱片久久| 欧美综合亚洲图片综合区| 中文字幕一区二区三区四区不卡|