PDO docs and spec problem

[email protected] (Oskar Eisemuth) Mon, 26 Oct 2009 12:44:26 +0100
Newsgroups php.pdo
Message-ID <[email protected]>
Hello

I do think the comments for the various PDO functions can be helpful to 
specific the needs or the workarounds people need to use.
There is a general lack of documentation how flags interact, what flags 
belongs to what kind of query, this makes users (including me) not very 
happy.
Guess work how a function or flag works should be avoided, no surprises 
please!

Looking at the source:

#define PDO_FETCH_FLAGS 0xFFFF0000 /* fetchAll() modes or'd to 
PDO_FETCH_XYZ */
#define PDO_FETCH_GROUP 0x00010000 /* fetch into groups */
#define PDO_FETCH_UNIQUE 0x00030000 /* fetch into groups assuming first 
col is unique */
#define PDO_FETCH_SERIALIZE 0x00080000 /* fetch class instances by 
calling serialize */
#define PDO_FETCH_PROPS_LATE 0x00100000 /* fetch props after calling ctor */

Now that’s not very helpfully either, as example I don’t think 
FETCH_PROPS_LATE belong to the fetchAll case.

About PDO_FETCH_UNIQUE I am unsure, at least my tests today showed that 
pdo mysql show a new behaviour, it works without PDO_FETCH_GROUP and 
results in something like MDB2/DB getAssoc. I am quite sure my last 
tests with php < 5.3 assumed GROUP in the past. Now I would really like 
to use that feature, but how stable is it when the user documentation 
and code assumes PDO_FETCH_GROUP should be used?!?

(It doesn’t mention it kills the first column in the result set, I would 
like to have it for creating an ORM object; And now I already ask for a 
feature improvement, sorry)

Is PDO_FETCH_KEY_PAIR even documented somewhere? The comment in the 
header file doesn’t mention that you really need to have only two columns.

I think this description of PDO::FETCH_SERIALIZE is technical wrong.:
Docs say: “As PDO::FETCH_INTO but object is provided as a serialized 
string. Available since PHP 5.1.0.”
The PDO code seems to agree with me that it really belongs to FETCH_CLASS.

Before new features and bug fixing can be done, I think the 
documentation of PDO needs love. If you use the PDO docs as specs how 
PDO should work then new bugs will be introduced.

A new wiki page would be a useful starting point to cleanly describe the 
behaviour of various flags and how they work (together)?

Best regards
Oskar Eisemuth