Denis, I started reviewing the patch, but unfortunately things at work get a bit hectic so haven't made too much progress ;(
On Thu, Jun 3, 2010 at 12:07 PM, Denis Gasparin <denis.gaspa...@edistar.com>wrote: > Hi. > > Did you have the time to review the patches? Any problem with them? > > Thank you in advance, > Denis > > > ----- Messaggio originale ----- > > Da: "Denis Gasparin" <denis.gaspa...@edistar.com> > > A: "Ilia Alshanetsky" <i...@prohost.org>, "Matteo Beccati" < > p...@beccati.com> > > Cc: internals@lists.php.net, "pdo" <p...@lists.php.net> > > Inviato: Mercoledì, 26 maggio 2010 13:11:17 > > Oggetto: Re: [PHP-DEV] [PATCH] New PDO methods for PostgreSQL driver > > > I attached to this mail a new version of the patch both in unified and > > single file format. > > > > I attached the unit tests for all the new methods too. > > They are three files: one for pgsqlIsInTransaction(), one for > > pgsqlCopyFrom* methods and one for pgsqlCopyTo* methods. > > > > I did a typo writing the documentation in my first mail. The typo is > > about the $fields parameter. > > It is actually a string (not an array) with field names separated by > > comma. > > > > If needed, I can write also documentation in a more suitable format > > for php web site. > > > > The updated documentation of the methods follows. > > > > Any feedback is appreciated. > > > > Thank you in advance, > > Denis > > > > pgsqlIsInTransaction() > > > > It uses the native Postgresql functions to check transaction status. > > It returns one of the following status codes: > > * PDO:GSQL_TRANSACTION_IDLE: connection in idle status > > * PDO:GSQL_TRANSACTION_ACTIVE: connection is executing a command > > * PDO:GSQL_TRANSACTION_INTRANS: connection is idle in a valid > > transaction block > > * PDO:GSQL_TRANSACTION_INERROR: connection is idle, in a failed > > transaction block > > * PDO:GSQL_TRANSACTION_UNKNOWN: connection is in a bad status > > > > > > > > pgsqlCopyFromArray($table,Array $data,$delimiter,$null, Array $fields) > > > > It uses the native Postgresql copy construct to append $data to > > $table. It returns boolean. > > Parameters: * (mandatory) $table: table to append data to > > * (mandatory) $data: Array of rows with data in table field order > > (or as specified in the $fields array). Fields must be separated by > > $delimiter or by > > postgresql standard \t) > > * $delimiter: alternative delimiter to use in place of the standard > > postgres delimiter ("\t") > > * $null: alternative string to use as null value. Default is "\N" > > * $fields: string with table fields that are specified in $data > > parameter. Fields are separated by comma > > > > > > > > pgsqlCopyFromFile($table,$filename,$delimiter,$null,$fields) > > > > It uses the native Postgresql copy construct to append $filename > > contents to $table. > > It returns boolean. > > Parameters: * (mandatory) $table: table to append data to. > > * (mandatory) $filename: file with contents to append to $table. See > > Postgresql documentation for the format. > > * $delimiter: alternative delimiter to use in place of the standard > > postgres delimiter ("\t") > > * $null: alternative string to use as null value. Default is "\N" > > * $fields: string with table fields that are specified in $filename > > file. Fields are separated by comma > > > > pgsqlCopyToArray($table,$delimiter,$null,$fields) > > > > It uses the native Postgresql copy construct to retrieve $table > > contents and store them to an array. > > It returns an array of rows or false in case of problems. > > The format of the rows into the array is indicated in the $delimiter, > > $null and $fields parameters. > > Parameters: * (mandatory) $table: table to retrieve data from. > > * $delimiter: alternative delimiter to use in place of the standard > > postgres delimiter ("\t") > > * $null: alternative string to use as null value. Default is "\N" > > * $fields: string with table fields to include in the row of the > > array. Fields are separated by comma > > > > > > pgsqlCopyToFile($table,$filename,$delimiter,$null,$fields) > > > > > > It uses the native Postgresql copy construct to retrieve $table > > contents and store them into a file. > > It returns boolean. > > The format of the rows stored into the file is indicated in the > > $delimiter, $null and $fields parameters. > > Parameters: * (mandatory) $table: table to retrieve data from. > > * (mandatory) $filename: file where to store the contents of the table > > * $delimiter: alternative delimiter to use in place of the standard > > postgres delimiter ("\t") > > * $null: alternative string to use as null value. Default is "\N" > > * $fields: string with table fields to include in the row of the > > array. Fields are separated by comma > > > > > > ----- Messaggio originale ----- > > > Da: "Ilia Alshanetsky" <i...@prohost.org> > > > A: "Denis Gasparin" <denis.gaspa...@edistar.com> > > > Cc: internals@lists.php.net > > > Inviato: Martedì, 25 maggio 2010 18:40:09 > > > Oggetto: Re: [PHP-DEV] [PATCH] New PDO methods for PostgreSQL driver > > > > > Good reason, I'll review the patch in the next day or two. > > > > > > > > > On Mon, May 24, 2010 at 5:55 PM, Denis Gasparin < > > > denis.gaspa...@edistar.com > wrote: > > > > > > > > > > > > The copy to/from sql statements accept both as main parameter a > > > filename or stdout/stdin respectively. > > > > > > The filename represents a file in the database filesystem > > > (apache/php and postgresql must reside on the same machine or share > > > the file via > > > shared filesystem). I quote from the postgresql manual: > > > > > > <<< > > > COPY with a file name instructs the PostgreSQL server to directly > > > read from or write to a file. The file must be accessible to the > > > server and > > > the name must be specified from the viewpoint of the (database) > > > server. > > > >>> > > > > > > Because of this "limitation", if you'd like to load a csv file into > > > pgsql via copy command, you must before copy into a shared folder > > > and the issue the copy from filename command. > > > Using the methods added to PDO, you can do it directly from the > > > webserver. > > > > > > About copying to/from stdin and stdout, PostgreSQL enters a > > > particular status after a copy stdin/stdout command has been issued > > > via sql. > > > These status codes are PGRES_COPY_OUT and PGRES_COPY_IN. When in > > > this status, the only way to interact with the database server is > > > via PQgetCopyData and PQputCopyData. > > > > > > There are not PDO methods or functions that implements these > > > functions and there is no way to share the connection between PDO > > > driver and old > > > pgsql drivers. > > > > > > These are the relevant PostgreSQL man pages: > > > > > > http://www.postgresql.org/docs/8.2/interactive/libpq-copy..html > > > http://www.postgresql.org/docs/8.2/interactive/sql-copy.html > > > > > > Denis > > > > > > > > > > > > > > > > Denis could you elaborate on what makes use of the COPY code via > > > > Sql behave differently then a PHP method call? > > > > > > > > Ilia Alshanetsky > > > > CIO/CSO Centah Inc. > > > > > > > > On 2010-05-24, at 15:45, Denis Gasparin < > > > > denis.gaspa...@edistar.com > > > > > > > > > wrote: > > > > > > > > > > > > > > I'll provide the patches in a single file as soon as possible.. > > > > > > > > > > Actually all the methods are wrappers against the native > > > > > PostgreSQL commands (connection status, copy to/from). > > > > > > > > > > I needed to develop them as methods because it is not possible > > > > > to get the same results with a sql statement (in particular for > > > > > connection status). > > > > > > > > > > It was not possible also for COPY TO/FROM because of the way > > > > > PostgreSQL handle them ( special functions were developed also > > > > > for the old pgsql driver). > > > > > > > > > > We are currently using them in production and we needed them in > > > > > order to avoid additional connections to database (one with the > > > > > old driver and one with PDO). > > > > > > > > > > Denis > > > > > > > > > > > > > > > ----- Messaggio originale ----- > > > > >> Da: "Ilia Alshanetsky" < i...@prohost.org > > > > > >> A: "Denis Gasparin" < denis.gaspa...@edistar.com > > > > > >> Cc: internals@lists.php.net > > > > >> Inviato: Lunedì, 24 maggio 2010 19:54:46 > > > > >> Oggetto: Re: [PHP-DEV] [PATCH] New PDO methods for PostgreSQL > > > > >> driver > > > > > > > > > >> Denis, > > > > >> > > > > >> > > > > >> Could you merge the patches into a single for easier code > > > > >> review. Also, the copy to/from file seems like it would just be > > > > >> a wrapper > > > > >> against the native COPY PostgreSQL command, is there really a > > > > >> need to provide a method for it? > > > > >> > > > > >> > > > > >> On Mon, May 24, 2010 at 4:57 AM, Denis Gasparin < > > > > >> denis.gaspa...@edistar.com > wrote: > > > > >> > > > > >> > > > > >> Hi. > > > > >> > > > > >> I developed some patches for PDO/Postgresql driver in order to > > > > >> add some useful methods that were available in the original > > > > >> pgsql driver. > > > > >> > > > > >> The attached patches apply on 5.3.2 and svn 5.3.x. > > > > >> If needed, i have patches also for 5.2.x. > > > > >> > > > > >> Please comment and tell me improvements or tips. > > > > >> > > > > >> Thank you in advance, > > > > >> > > > > >> Denis Gasparin > > > > >> > > > > >> Documentation of the added methods follows: > > > > >> > > > > >> pgsqlIsInTransaction() > > > > >> > > > > >> It uses the native Postgresql functions to check transaction > > > > >> status.. > > > > >> It returns one of the following status codes: > > > > >> * PDO::PGSQL_TRANSACTION_IDLE: connection in idle status > > > > >> * PDO::PGSQL_TRANSACTION_ACTIVE: connection is executing a > > > > >> command * PDO::PGSQL_TRANSACTION_INTRANS: connection is idle in > > > > >> a valid transaction block > > > > >> * PDO::PGSQL_TRANSACTION_INERROR: connection is idle, in a > > > > >> failed transaction block > > > > >> * PDO::PGSQL_TRANSACTION_UNKNOWN: connection is in a bad status > > > > >> > > > > >> > > > > >> > > > > >> pgsqlCopyFromArray($table,Array $data,$delimiter,$null, Array > > > > >> $fields) > > > > >> > > > > >> It uses the native Postgresql copy construct to append $data to > > > > >> $table. It returns boolean. > > > > >> Parameters: * (mandatory) $table: table to append data to > > > > >> * (mandatory) $data: Array of rows with data in table field > > > > >> order (or as specified in the $fields array). Fields must be > > > > >> separated by $delimiter or by > > > > >> postgresql standard \t) > > > > >> * $delimiter: alternative delimiter to use in place of the > > > > >> standard postgres delimiter ("\t") > > > > >> * $null: alternative string to use as null value. Default is > > > > >> "\N" * $fields: array with table fields that are specified in > > > > >> $data parameter > > > > >> > > > > >> > > > > >> > > > > >> pgsqlCopyFromFile($table,$filename,$delimiter,$null,$fields) > > > > >> > > > > >> It uses the native Postgresql copy construct to append > > > > >> $filename contents to $table. > > > > >> It returns boolean. > > > > >> Parameters: * (mandatory) $table: table to append data to. > > > > >> * (mandatory) $filename: file with contents to append to > > > > >> $table. See Postgresql documentation for the format. > > > > >> * $delimiter: alternative delimiter to use in place of the > > > > >> standard postgres delimiter ("\t") > > > > >> * $null: alternative string to use as null value. Default is > > > > >> "\N" * $fields: array with table fields that are specified in > > > > >> $filename file > > > > >> > > > > >> pgsqlCopyToArray($table,$delimiter,$null,$fields) > > > > >> > > > > >> It uses the native Postgresql copy construct to retrieve $table > > > > >> contents and store them to an array. > > > > >> It returns an array of rows or false in case of problems. > > > > >> The format of the rows into the array is indicated in the > > > > >> $delimiter, $null and $fields parameters. > > > > >> Parameters: * (mandatory) $table: table to retrieve data from.. > > > > >> * $delimiter: alternative delimiter to use in place of the > > > > >> standard postgres delimiter ("\t") > > > > >> * $null: alternative string to use as null value. Default is > > > > >> "\N" * $fields: array with table fields to include in the row > > > > >> of the > > > > >> array. > > > > >> > > > > >> > > > > >> pgsqlCopyToFile($table,$filename,$delimiter,$null,$fields) > > > > >> > > > > >> > > > > >> It uses the native Postgresql copy construct to retrieve $table > > > > >> contents and store them into a file. > > > > >> It returns boolean. > > > > >> The format of the rows stored into the file is indicated in the > > > > >> $delimiter, $null and $fields parameters. > > > > >> Parameters: * (mandatory) $table: table to retrieve data from.. > > > > >> * (mandatory) $filename: file where to store the contents of > > > > >> the table * $delimiter: alternative delimiter to use in place > > > > >> of the > > > > >> standard postgres delimiter ("\t") > > > > >> * $null: alternative string to use as null value. Default is > > > > >> "\N" * $fields: array with table fields to include in the row > > > > >> of the > > > > >> array. > > > > >> > > > > >> -- PHP Internals - PHP Runtime Development Mailing List > > > > >> To unsubscribe, visit: http://www.php.net/unsub.php > > > > -- PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php >