List:Internals« Previous MessageNext Message »
From:sanja Date:March 31 2005 11:14pm
Subject:bk commit into 5.0 tree (bell:1.1844)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of bell. When bell does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1844 05/04/01 02:14:30 bell@stripped +14 -0
  postmerge 4.1->5.0 fixes

  sql/sql_view.cc
    1.38 05/04/01 02:13:23 bell@stripped +1 -1
    added new parameter

  sql/sql_derived.cc
    1.71 05/04/01 02:13:23 bell@stripped +1 -1
    fixed typo of manual merge

  sql/item_subselect.h
    1.66 05/04/01 02:13:23 bell@stripped +3 -1
    fixed type

  sql/item_subselect.cc
    1.99 05/04/01 02:13:23 bell@stripped +37 -7
    added forgoten methods

  sql/item_func.h
    1.104 05/04/01 02:13:23 bell@stripped +1 -2
    item type name fixed

  sql/item_cmpfunc.cc
    1.142 05/04/01 02:13:23 bell@stripped +1 -1
    fixed type

  sql/item.h
    1.110 05/04/01 02:13:23 bell@stripped +1 -1
    fixed method definition

  sql/item.cc
    1.129 05/04/01 02:13:23 bell@stripped +44 -9
    support of new types added to merge of union types routines

  sql/field.h
    1.148 05/04/01 02:13:23 bell@stripped +1 -3
    removed non-existent methods
    added wrongly deleted during manual merge string

  sql/field.cc
    1.247 05/04/01 02:13:22 bell@stripped +391 -248
    new 5.0 types support
    temporary table/db names detection in field fixed

  mysql-test/t/subselect.test
    1.94 05/04/01 02:13:22 bell@stripped +1 -1
    fixed mistake of merge

  mysql-test/r/view.result
    1.72 05/04/01 02:13:22 bell@stripped +1 -1
    result change

  mysql-test/r/union.result
    1.68 05/04/01 02:13:22 bell@stripped +2 -2
    result change

  mysql-test/r/group_by.result
    1.46 05/04/01 02:13:22 bell@stripped +1 -1
    result change

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	bell
# Host:	sanja.is.com.ua
# Root:	/home/bell/mysql/bk/work-union_merge-5.0

--- 1.246/sql/field.cc	Thu Mar 31 10:39:42 2005
+++ 1.247/sql/field.cc	Fri Apr  1 02:13:22 2005
@@ -55,9 +55,9 @@
   following #defines describe that gap and how to canculate number of fields
   and index of field in thia array.
 */
-#define FIELDTYPE_TEAR_FROM (MYSQL_TYPE_NEWDATE+1)
-#define FIELDTYPE_TEAR_TO   (MYSQL_TYPE_ENUM-1)
-#define FIELDTYPE_NUM (FIELDTYPE_TEAR_FROM + (255-FIELDTYPE_TEAR_TO))
+#define FIELDTYPE_TEAR_FROM (MYSQL_TYPE_BIT + 1)
+#define FIELDTYPE_TEAR_TO   (MYSQL_TYPE_NEWDECIMAL - 1)
+#define FIELDTYPE_NUM (FIELDTYPE_TEAR_FROM + (255 - FIELDTYPE_TEAR_TO))
 inline int field_type2index (enum_field_types field_type)
 {
   return (field_type < FIELDTYPE_TEAR_FROM ?
@@ -70,118 +70,126 @@
   /* MYSQL_TYPE_DECIMAL -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_DECIMAL,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_NEWDECIMAL,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_DECIMAL,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_NEWDECIMAL,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_DECIMAL,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_TINY -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_TINY,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_TINY,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_SHORT,       MYSQL_TYPE_LONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_FLOAT,       MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_TINY,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_TINY,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_SHORT -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_SHORT,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_SHORT,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_SHORT,       MYSQL_TYPE_LONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_FLOAT,       MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_SHORT,       MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_SHORT,       MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_SHORT,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_SHORT,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_LONG -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_LONG,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_LONG,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_LONG,        MYSQL_TYPE_LONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_LONG,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_LONG,         MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_LONG,
+    MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_LONG,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_LONG,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_FLOAT -> */
   {
@@ -192,25 +200,27 @@
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_FLOAT,       MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_FLOAT,       MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_FLOAT,       MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_FLOAT,
+    MYSQL_TYPE_FLOAT,       MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_FLOAT,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_FLOAT,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_DOUBLE -> */
   {
@@ -221,30 +231,32 @@
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
+    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_DOUBLE,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_DOUBLE,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_NULL -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_TINY,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_TINY,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_SHORT,       MYSQL_TYPE_LONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
@@ -257,192 +269,206 @@
     MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_TIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_DATETIME,    MYSQL_TYPE_YEAR,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_NEWDATE,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_ENUM,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_BIT,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_ENUM,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_SET,         MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
     MYSQL_TYPE_STRING,      MYSQL_TYPE_GEOMETRY
   },
   /* MYSQL_TYPE_TIMESTAMP -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
     MYSQL_TYPE_TIMESTAMP,   MYSQL_TYPE_TIMESTAMP,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
     MYSQL_TYPE_DATETIME,    MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_DATETIME,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_LONGLONG -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_LONGLONG,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_LONGLONG,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_LONGLONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_LONG,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_LONGLONG,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_LONGLONG,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_INT24 -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_DECIMAL,     MYSQL_TYPE_INT24,
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_INT24,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
     MYSQL_TYPE_INT24,       MYSQL_TYPE_LONG,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_FLOAT,       MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_INT24,       MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_INT24,       MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_INT24,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_INT24,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL    MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_DATE -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
     MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
     MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_NEWDATE,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,  MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_TIME -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
     MYSQL_TYPE_TIME,        MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
     MYSQL_TYPE_DATETIME,    MYSQL_TYPE_TIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_DATETIME,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_DATETIME -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
     MYSQL_TYPE_DATETIME,    MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
     MYSQL_TYPE_DATETIME,    MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_DATETIME,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_YEAR -> */
   {
@@ -453,112 +479,213 @@
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
     MYSQL_TYPE_FLOAT,       MYSQL_TYPE_DOUBLE,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_YEAR,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_YEAR,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
     MYSQL_TYPE_LONGLONG,    MYSQL_TYPE_INT24,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_YEAR,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_YEAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_NEWDATE -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
     MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
     MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_DATETIME,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_NEWDATE,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_DATETIME,    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_NEWDATE,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
+  //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
+    MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
+  //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
+  },
+  /* MYSQL_TYPE_VARCHAR -> */
+  {
+  //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
+  //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
+    MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
+  //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR
+  },
+  /* MYSQL_TYPE_BIT -> */
+  {
+  //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
+    MYSQL_TYPE_BIT,         MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_BIT,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
+  //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
+    MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
+  //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
+  },
+  /* MYSQL_TYPE_NEWDECIMAL -> */
+  {
+  //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_NEWDECIMAL,
+  //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_NEWDECIMAL,
+  //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
+    MYSQL_TYPE_DOUBLE,      MYSQL_TYPE_DOUBLE,
+  //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_NEWDECIMAL,
+  //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_NEWDECIMAL,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_NEWDECIMAL,  MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_ENUM -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_ENUM,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_ENUM,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_SET -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_SET,         MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_SET,         MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_STRING,      MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_TINY_BLOB -> */
   {
@@ -576,10 +703,12 @@
     MYSQL_TYPE_TINY_BLOB,   MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_TINY_BLOB,   MYSQL_TYPE_TINY_BLOB,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_TINY_BLOB,   MYSQL_TYPE_TINY_BLOB,
+  //MYSQL_TYPE_BIT          <16>-<245>
     MYSQL_TYPE_TINY_BLOB,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_TINY_BLOB,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_TINY_BLOB,   MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_TINY_BLOB,   MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
@@ -605,10 +734,12 @@
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
+  //MYSQL_TYPE_BIT          <16>-<245>
     MYSQL_TYPE_MEDIUM_BLOB,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_MEDIUM_BLOB,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_MEDIUM_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
@@ -634,10 +765,12 @@
     MYSQL_TYPE_LONG_BLOB,   MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_LONG_BLOB,   MYSQL_TYPE_LONG_BLOB,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_LONG_BLOB,   MYSQL_TYPE_LONG_BLOB,
+  //MYSQL_TYPE_BIT          <16>-<245>
     MYSQL_TYPE_LONG_BLOB,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_LONG_BLOB,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_LONG_BLOB,   MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_LONG_BLOB,   MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
@@ -663,10 +796,12 @@
     MYSQL_TYPE_BLOB,        MYSQL_TYPE_BLOB,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_BLOB,        MYSQL_TYPE_BLOB,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_BLOB,
+  //MYSQL_TYPE_BIT          <16>-<245>
     MYSQL_TYPE_BLOB,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_BLOB,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_BLOB,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_BLOB,        MYSQL_TYPE_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
@@ -679,31 +814,33 @@
   /* MYSQL_TYPE_VAR_STRING -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR
   },
   /* MYSQL_TYPE_STRING -> */
   {
@@ -721,45 +858,49 @@
     MYSQL_TYPE_STRING,      MYSQL_TYPE_STRING,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
     MYSQL_TYPE_STRING,      MYSQL_TYPE_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
     MYSQL_TYPE_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_STRING,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_STRING,      MYSQL_TYPE_STRING,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
     MYSQL_TYPE_STRING,      MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
     MYSQL_TYPE_STRING,      MYSQL_TYPE_STRING
   },
   /* MYSQL_TYPE_GEOMETRY -> */
   {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_NULL         MYSQL_TYPE_TIMESTAMP
-    MYSQL_TYPE_GEOMETRY,    MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_GEOMETRY,    MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_LONGLONG     MYSQL_TYPE_INT24
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATE         MYSQL_TYPE_TIME
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_VAR_STRING,
-  //MYSQL_TYPE_NEWDATE      <14>
-    MYSQL_TYPE_VAR_STRING,
-  //<246>                   MYSQL_TYPE_ENUM
-                            MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_BIT          <16>-<245>
+    MYSQL_TYPE_VARCHAR,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
-    MYSQL_TYPE_VAR_STRING,  MYSQL_TYPE_TINY_BLOB,
+    MYSQL_TYPE_VARCHAR,     MYSQL_TYPE_TINY_BLOB,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
     MYSQL_TYPE_MEDIUM_BLOB, MYSQL_TYPE_LONG_BLOB,
   //MYSQL_TYPE_BLOB         MYSQL_TYPE_VAR_STRING
-    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VAR_STRING,
+    MYSQL_TYPE_BLOB,        MYSQL_TYPE_VARCHAR,
   //MYSQL_TYPE_STRING       MYSQL_TYPE_GEOMETRY
     MYSQL_TYPE_STRING,      MYSQL_TYPE_GEOMETRY
   }
@@ -789,7 +930,7 @@
 static Item_result field_types_result_type [FIELDTYPE_NUM]=
 {
   //MYSQL_TYPE_DECIMAL      MYSQL_TYPE_TINY
-  REAL_RESULT,              INT_RESULT,
+  DECIMAL_RESULT,           INT_RESULT,
   //MYSQL_TYPE_SHORT        MYSQL_TYPE_LONG
   INT_RESULT,               INT_RESULT,
   //MYSQL_TYPE_FLOAT        MYSQL_TYPE_DOUBLE
@@ -802,10 +943,12 @@
   STRING_RESULT,            STRING_RESULT,
   //MYSQL_TYPE_DATETIME     MYSQL_TYPE_YEAR
   STRING_RESULT,            INT_RESULT,
-  //MYSQL_TYPE_NEWDATE      <14>
+  //MYSQL_TYPE_NEWDATE      MYSQL_TYPE_VARCHAR
+  STRING_RESULT,            STRING_RESULT,
+  //MYSQL_TYPE_BIT          <16>-<245>
   STRING_RESULT,
-  //<246>                   MYSQL_TYPE_ENUM
-                            STRING_RESULT,
+  //MYSQL_TYPE_NEWDECIMAL   MYSQL_TYPE_ENUM
+  DECIMAL_RESULT,           STRING_RESULT,
   //MYSQL_TYPE_SET          MYSQL_TYPE_TINY_BLOB
   STRING_RESULT,            STRING_RESULT,
   //MYSQL_TYPE_MEDIUM_BLOB  MYSQL_TYPE_LONG_BLOB
@@ -1102,13 +1245,13 @@
 
 void Field::make_field(Send_field *field)
 {
-  if ((field->org_table_name= orig_table->s->table_name) == &unknown_table_name)
+  if (orig_table->s->table_cache_key && *(orig_table->s->table_cache_key))
+  {
+    field->org_table_name= orig_table->s->table_name;
     field->db_name= orig_table->s->table_cache_key;
   }
   else
-  {
-    field->db_name= "";
-  }
+    field->org_table_name= field->db_name= "";
   field->table_name= orig_table->alias;
   field->col_name= field->org_col_name= field_name;
   field->charsetnr= charset()->number;

--- 1.147/sql/field.h	Thu Mar 31 10:39:42 2005
+++ 1.148/sql/field.h	Fri Apr  1 02:13:23 2005
@@ -468,7 +468,6 @@
   { return field_length + 1 + (dec ? 1 : 0) + (field_length == dec ? 1 : 0); }
   uint32 representation_length()
   { return field_length + 1 + (dec ? 1 : 0) + (field_length == dec ? 1 : 0); };
-  field_cast_enum field_cast_type() { return FIELD_CAST_NEWDECIMAL; }
   uint size_of() const { return sizeof(*this); } 
   uint32 pack_length() const { return (uint32) bin_size; }
 };
@@ -1002,7 +1001,7 @@
   enum_field_types real_type() const { return FIELD_TYPE_STRING; }
   bool has_charset(void) const
   { return charset() == &my_charset_bin ? FALSE : TRUE; }
-  field_cast_enum field_cast_type() { return FIELD_CAST_STRING; }
+  Field *new_field(MEM_ROOT *root, struct st_table *new_table);
 };
 
 
@@ -1305,7 +1304,6 @@
   { return (uint32) field_length + (bit_len > 0); }
   uint32 pack_length_in_rec() const { return field_length; }
   void sql_type(String &str) const;
-  field_cast_enum field_cast_type() { return FIELD_CAST_BIT; }
   char *pack(char *to, const char *from, uint max_length=~(uint) 0);
   const char *unpack(char* to, const char *from);
   Field *new_key_field(MEM_ROOT *root, struct st_table *new_table,

--- 1.128/sql/item.cc	Thu Mar 31 10:39:43 2005
+++ 1.129/sql/item.cc	Fri Apr  1 02:13:23 2005
@@ -4690,6 +4690,9 @@
   maybe_null= item->maybe_null;
   collation.set(item->collation);
   get_full_info(item);
+  /* fix variable decimals which always is NOT_FIXED_DEC */
+  if (Field::result_merge_type(fld_type) == INT_RESULT)
+    decimals= 0;
 }
 
 
@@ -4748,7 +4751,7 @@
     break;
   }
   case FUNC_ITEM:
-    if (((Item_func *) item)->functype() == Item_func::VAR_VALUE_FUNC)
+    if (((Item_func *) item)->functype() == Item_func::GUSERVAR_FUNC)
     {
       /*
         There are work around of problem with changing variable type on the
@@ -4764,6 +4767,8 @@
         return MYSQL_TYPE_LONGLONG;
       case REAL_RESULT:
         return MYSQL_TYPE_DOUBLE;
+      case DECIMAL_RESULT:
+        return MYSQL_TYPE_NEWDECIMAL;
       case ROW_RESULT:
       default:
         DBUG_ASSERT(0);
@@ -4793,8 +4798,38 @@
 
 bool Item_type_holder::join_types(THD *thd, Item *item)
 {
-  max_length= max(max_length, display_length(item));
+  DBUG_ENTER("Item_type_holder::join_types");
+  DBUG_PRINT("info:", ("was type %d len %d, dec %d name %s",
+                       fld_type, max_length, decimals,
+                       (name ? name : "<NULL>")));
+  DBUG_PRINT("info:", ("in type %d len %d, dec %d",
+                       get_real_type(item),
+                       item->max_length, item->decimals));
   fld_type= Field::field_type_merge(fld_type, get_real_type(item));
+  {
+    int item_decimals= item->decimals;
+    /* fix variable decimals which always is NOT_FIXED_DEC */
+    if (Field::result_merge_type(fld_type) == INT_RESULT)
+      item_decimals= 0;
+    decimals= max(decimals, item_decimals);
+  }
+  if (Field::result_merge_type(fld_type) == DECIMAL_RESULT)
+  {
+    int item_length= display_length(item);
+    int intp1= item_length - min(item->decimals, NOT_FIXED_DEC - 1);
+    int intp2= max_length - min(decimals, NOT_FIXED_DEC - 1);
+    /* can't be overflow because it work only for decimals (no strings) */
+    int dec_length= max(intp1, intp2) + decimals;
+    max_length= max(max_length, max(item_length, dec_length));
+    /*
+      we can't allow decimals to be NOT_FIXED_DEC, to prevent creation
+      decimal with max precision (see Field_new_decimal constcuctor)
+    */
+    if (decimals >= NOT_FIXED_DEC)
+      decimals= NOT_FIXED_DEC - 1;
+  }
+  else
+    max_length= max(max_length, display_length(item));
   if (Field::result_merge_type(fld_type) == STRING_RESULT)
   {
     const char *old_cs, *old_derivation;
@@ -4807,13 +4842,14 @@
 	       item->collation.collation->name,
 	       item->collation.derivation_name(),
 	       "UNION");
-      return TRUE;
+      DBUG_RETURN(TRUE);
     }
   }
-  decimals= max(decimals, item->decimals);
   maybe_null|= item->maybe_null;
   get_full_info(item);
-  return FALSE;
+  DBUG_PRINT("info:", ("become type %d len %d, dec %d",
+                       fld_type, max_length, decimals));
+  DBUG_RETURN(FALSE);
 }
 
 /*
@@ -4841,6 +4877,9 @@
   case MYSQL_TYPE_DATETIME:
   case MYSQL_TYPE_YEAR:
   case MYSQL_TYPE_NEWDATE:
+  case MYSQL_TYPE_VARCHAR:
+  case MYSQL_TYPE_BIT:
+  case MYSQL_TYPE_NEWDECIMAL:
   case MYSQL_TYPE_ENUM:
   case MYSQL_TYPE_SET:
   case MYSQL_TYPE_TINY_BLOB:
@@ -4906,10 +4945,6 @@
                          Field::NONE, name,
                          table, get_set_pack_length(enum_set_typelib->count),
                          enum_set_typelib, collation.collation);
-  case MYSQL_TYPE_VAR_STRING:
-    table->db_create_options|= HA_OPTION_PACK_RECORD;
-    return new Field_string(max_length, maybe_null, name, table,
-                            collation.collation);
   default:
     break;
   }

--- 1.109/sql/item.h	Wed Mar 30 23:31:12 2005
+++ 1.110/sql/item.h	Fri Apr  1 02:13:23 2005
@@ -389,7 +389,7 @@
       FALSE value is false or NULL
       TRUE value is true (not equal to 0)
   */
-  bool val_bool();
+  virtual bool val_bool();
   /* Helper functions, see item_sum.cc */
   String *val_string_from_real(String *str);
   String *val_string_from_int(String *str);

--- 1.141/sql/item_cmpfunc.cc	Mon Mar 21 14:43:13 2005
+++ 1.142/sql/item_cmpfunc.cc	Fri Apr  1 02:13:23 2005
@@ -708,7 +708,7 @@
     null_value= 1;
     return 0;
   }
-  longlong tmp= args[1]->val_int_result();
+  bool tmp= args[1]->val_bool_result();
   null_value= args[1]->null_value;
   return tmp;
 }

--- 1.103/sql/item_func.h	Thu Mar 31 10:39:43 2005
+++ 1.104/sql/item_func.h	Fri Apr  1 02:13:23 2005
@@ -54,7 +54,7 @@
 		  SP_POINTN,SP_GEOMETRYN,SP_INTERIORRINGN,
                   NOT_FUNC, NOT_ALL_FUNC,
                   NOW_FUNC, TRIG_COND_FUNC,
-                  GUSERVAR_FUNC, VAR_VALUE_FUNC};
+                  GUSERVAR_FUNC};
   enum optimize_type { OPTIMIZE_NONE,OPTIMIZE_KEY,OPTIMIZE_OP, OPTIMIZE_NULL,
                        OPTIMIZE_EQUAL };
   enum Type type() const { return FUNC_ITEM; }
@@ -1124,7 +1124,6 @@
     select @t1:=1,@t1,@t:="hello",@t from foo where (@t1:= t2.b)
   */
   enum_field_types field_type() const  { return MYSQL_TYPE_VARCHAR; }
-  enum Functype functype() const   { return VAR_VALUE_FUNC; }
   const char *func_name() const { return "get_user_var"; }
   bool const_item() const;
   table_map used_tables() const

--- 1.67/mysql-test/r/union.result	Wed Mar 30 23:31:11 2005
+++ 1.68/mysql-test/r/union.result	Fri Apr  1 02:13:22 2005
@@ -565,7 +565,7 @@
 show create table t1;
 Table	Create Table
 t1	CREATE TABLE `t1` (
-  `a` decimal(20,1) NOT NULL default '0.0'
+  `a` decimal(19,1) NOT NULL default '0.0'
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
 drop table t1;
 create table t2 (it1 tinyint, it2 tinyint not null, i int not null, ib bigint, f float, d double, y year, da date, dt datetime, sc char(10), sv varchar(10), b blob, tx text);
@@ -1226,7 +1226,7 @@
 create table t2 select a from t1 union select a from t1;
 show columns from t2;
 Field	Type	Null	Key	Default	Extra
-a	char(1)				
+a	varchar(1)	NO			
 drop table t2;
 create table t2 select a from t1 union select c from t1;
 ERROR HY000: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation 'UNION'

--- 1.70/sql/sql_derived.cc	Thu Mar 31 10:39:43 2005
+++ 1.71/sql/sql_derived.cc	Fri Apr  1 02:13:23 2005
@@ -115,7 +115,7 @@
       DBUG_RETURN(1); // out of memory
 
     // st_select_lex_unit::prepare correctly work for single select
-    if ((res= unit->prepare(thd, derived_result, 0, org_table_list->alias)))
+    if ((res= unit->prepare(thd, derived_result, 0, orig_table_list->alias)))
       goto exit;
 
 

--- 1.71/mysql-test/r/view.result	Wed Mar 23 10:32:40 2005
+++ 1.72/mysql-test/r/view.result	Fri Apr  1 02:13:22 2005
@@ -874,7 +874,7 @@
 col1
 describe v1;
 Field	Type	Null	Key	Default	Extra
-col1	char(2)	YES		NULL	
+col1	varchar(2)	YES		NULL	
 drop view v1;
 drop table `t1a``b`;
 create table t1 (col1 char(5),col2 char(5));

--- 1.93/mysql-test/t/subselect.test	Thu Mar 31 10:39:42 2005
+++ 1.94/mysql-test/t/subselect.test	Fri Apr  1 02:13:22 2005
@@ -1726,7 +1726,7 @@
 select (1,2,3) = (select * from t1);
 -- error 1241
 select (select * from t1) = (1,2,3);
-drop table t1
+drop table t1;
 
 #
 #decimal-related tests

--- 1.98/sql/item_subselect.cc	Thu Mar 31 10:39:43 2005
+++ 1.99/sql/item_subselect.cc	Fri Apr  1 02:13:23 2005
@@ -637,18 +637,13 @@
     reset();
     return 0;
   }
-  str->set(value,&my_charset_bin);
+  str->set((ulonglong)value,&my_charset_bin);
   return str;
 }
 
 
 my_decimal *Item_exists_subselect::val_decimal(my_decimal *decimal_value)
 {
-  /*
-    As far as Item_in_subselect called only from Item_in_optimizer this
-    method should not be used
-  */
-  DBUG_ASSERT(0);
   DBUG_ASSERT(fixed == 1);
   if (exec())
   {
@@ -731,8 +726,43 @@
     null_value= 1;
     return 0;
   }
-  str->set(value, &my_charset_bin);
+  str->set((ulonglong)value, &my_charset_bin);
   return str;
+}
+
+
+bool Item_in_subselect::val_bool()
+{
+  DBUG_ASSERT(fixed == 1);
+  if (exec())
+  {
+    reset();
+    null_value= 1;
+    return 0;
+  }
+  if (was_null && !value)
+    null_value= 1;
+  return value;
+}
+
+my_decimal *Item_in_subselect::val_decimal(my_decimal *decimal_value)
+{
+  /*
+    As far as Item_in_subselect called only from Item_in_optimizer this
+    method should not be used
+  */
+  DBUG_ASSERT(0);
+  DBUG_ASSERT(fixed == 1);
+  if (exec())
+  {
+    reset();
+    null_value= 1;
+    return 0;
+  }
+  if (was_null && !value)
+    null_value= 1;
+  int2my_decimal(E_DEC_FATAL_ERROR, value, 0, decimal_value);
+  return decimal_value;
 }
 
 

--- 1.65/sql/item_subselect.h	Thu Mar 31 10:39:43 2005
+++ 1.66/sql/item_subselect.h	Fri Apr  1 02:13:23 2005
@@ -179,7 +179,7 @@
 class Item_exists_subselect :public Item_subselect
 {
 protected:
-  longlong value; /* value of this item (boolean: exists/not-exists) */
+  bool value; /* value of this item (boolean: exists/not-exists) */
 
 public:
   Item_exists_subselect(st_select_lex *select_lex);
@@ -243,6 +243,8 @@
   longlong val_int();
   double val_real();
   String *val_str(String*);
+  my_decimal *val_decimal(my_decimal *);
+  bool val_bool();
   void top_level_item() { abort_on_null=1; }
   bool test_limit(st_select_lex_unit *unit);
   void print(String *str);

--- 1.37/sql/sql_view.cc	Fri Mar  4 19:54:18 2005
+++ 1.38/sql/sql_view.cc	Fri Apr  1 02:13:23 2005
@@ -216,7 +216,7 @@
 
   /* prepare select to resolve all fields */
   lex->view_prepare_mode= 1;
-  if (unit->prepare(thd, 0, 0))
+  if (unit->prepare(thd, 0, 0, view->view_name.str))
   {
     /*
       some errors from prepare are reported to user, if is not then

--- 1.45/mysql-test/r/group_by.result	Wed Mar 30 23:31:11 2005
+++ 1.46/mysql-test/r/group_by.result	Fri Apr  1 02:13:22 2005
@@ -696,7 +696,7 @@
 delete from t2  where a = 2 and b = 'val-2' limit 30;
 explain select c from t2 where a = 2 and b = 'val-2' group by c;
 id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
-1	SIMPLE	t2	ref	PRIMARY,a	PRIMARY	400	const,const	6	Using where
+1	SIMPLE	t2	ref	PRIMARY,a	PRIMARY	402	const,const	6	Using where
 select c from t2 where a = 2 and b = 'val-2' group by c;
 c
 val-74
Thread
bk commit into 5.0 tree (bell:1.1844)sanja1 Apr