Same, I am disappointed to see this committed still after the concerns raised here.
- Jon On Sat, Jun 12, 2010 at 6:24 AM, Pierre Joye <pierre....@gmail.com> wrote: > hi Ilia, > > So you basically say that the worries and wishes raised here are > simply irrelevant and at the end of the day you decide what PDO can or > cannot be? > > I'm very disappointed by these two commits. I don't think it is the > way we should develop PDO and it is clear that I'm not the only one to > think that. As it is trunk, I won't battle too much to revert it but > be sure that is not something I will let in for any of the upcoming > releases as it is clearly bad design. > > Cheers, > -- > Pierre > > On Thu, Jun 10, 2010 at 2:12 PM, Ilia Alshanetsky <i...@prohost.org> > wrote: > > I've added the transaction code as a generic method inTransaction(), by > > default it'll just use in_txn internal parameter, but allows the driver > to > > extend this (as was done in PostgreSQL) and provide a detailed status > code. > > > > On Wed, May 26, 2010 at 1:11 PM, Denis Gasparin > > <denis.gaspa...@edistar.com>wrote: > > > >> > >> 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 > >> > > > > > > -- > Pierre > > @pierrejoye | http://blog.thepimp.net | http://www.libgd.org > > -- > PDO Working Group Mailing List (http://pdo.php.net) > To unsubscribe, visit: http://www.php.net/unsub.php > > -- Jonathan H. Wage http://www.twitter.com/jwage