currently pdo_mysql is unable to discern between a BLOB and a TEXT field
in mysql_statement.c
By using the current if (IS_BLOB(F->flags)), which is now deprecated in
the mysql c api, it will be true for both TEXT and BLOB fields.
By updating a little to the newer api and checking with F->type we get
the same result, however, further checking on the character set number
can distinguish between BINARY and CHAR, VARBINARY and VARCHAR, and BLOB
and TEXT fields.
When using PDOStatement::getColumnMeta() any field with charsetnr of 63
reports as text, rather than blob. Patch follows...
--- old.c 2007-06-26 11:27:57.000000000 +1000
+++ mysql_statement.c 2007-06-26 11:26:47.000000000 +1000
@@ -581,8 +581,12 @@
if (F->flags & UNIQUE_KEY_FLAG) {
add_next_index_string(flags, "unique_key", 1);
}
-
if (IS_BLOB(F->flags)) {
-
add_next_index_string(flags, "blob", 1);
-
if(F->type == MYSQL_TYPE_BLOB) {
-
if(F->charsetnr == 63) {
-
add_next_index_string(flags, "blob", 1);
-
} else {
-
add_next_index_string(flags, "text", 1);
-
} } str = type_to_name_native(F->type); if (str) {
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."
Will this mechanism for differentiating between TEXT and BLOB work in
MySQL 3.23?
currently pdo_mysql is unable to discern between a BLOB and a TEXT
field
in mysql_statement.c
By using the current if (IS_BLOB(F->flags)), which is now
deprecated in
the mysql c api, it will be true for both TEXT and BLOB fields.By updating a little to the newer api and checking with F->type we get
the same result, however, further checking on the character set number
can distinguish between BINARY and CHAR, VARBINARY and VARCHAR, and
BLOB
and TEXT fields.When using PDOStatement::getColumnMeta() any field with charsetnr
of 63
reports as text, rather than blob. Patch follows...--- old.c 2007-06-26 11:27:57.000000000 +1000
+++ mysql_statement.c 2007-06-26 11:26:47.000000000 +1000
@@ -581,8 +581,12 @@
if (F->flags & UNIQUE_KEY_FLAG) {
add_next_index_string(flags, "unique_key", 1);
}
if (IS_BLOB(F->flags)) {
add_next_index_string(flags, "blob", 1);
if(F->type == MYSQL_TYPE_BLOB) {
if(F->charsetnr == 63) {
add_next_index_string(flags, "blob", 1);
} else {
add_next_index_string(flags, "text", 1);
} } str = type_to_name_native(F->type); if (str) {
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."--
Ilia Alshanetsky
This one time, at band camp, Ilia Alshanetsky ilia@prohost.org wrote:
Will this mechanism for differentiating between TEXT and BLOB work in
MySQL 3.23?
unable to test with 3.*
Kevin
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."
This one time, at band camp, Ilia Alshanetsky ilia@prohost.org wrote:
Will this mechanism for differentiating between TEXT and BLOB work in
MySQL 3.23?
unable to test with 3.*
Kevin
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."
This one time, at band camp, Ilia Alshanetsky ilia@prohost.org wrote:
Will this mechanism for differentiating between TEXT and BLOB work in
MySQL 3.23?
From what I can see of the c api, the 3.23 and 4 api is the same. So
should work in both.
Kevin
--
"Democracy is two wolves and a lamb voting on what to have for lunch.
Liberty is a well-armed lamb contesting the vote."