diff --git a/storage/connect/ha_connect.cc b/storage/connect/ha_connect.cc
index 32f26d5263e8906899e33ba2bcf122e571b5f18e..e939e1226e9764afcb16208b4bd436608c8c6894 100644
--- a/storage/connect/ha_connect.cc
+++ b/storage/connect/ha_connect.cc
@@ -270,7 +270,7 @@ struct ha_field_option_struct
   int offset;
   int freq;      // Not used by this version
   int opt;       // Not used by this version
-  int buflen;
+  int fldlen;
   const char *dateformat;
   const char *fieldformat;
   char *special;
@@ -282,7 +282,7 @@ ha_create_table_option connect_field_option_list[]=
   HA_FOPTION_NUMBER("FLAG", offset, -1, 0, INT_MAX32, 1),
   HA_FOPTION_NUMBER("FREQUENCY", freq, 0, 0, INT_MAX32, 1), // not used
   HA_FOPTION_NUMBER("OPT_VALUE", opt, 0, 0, 2, 1),  // used for indexing
-  HA_FOPTION_NUMBER("BUF_LENGTH", buflen, 0, 0, INT_MAX32, 1),
+  HA_FOPTION_NUMBER("FIELD_LENGTH", fldlen, 0, 0, INT_MAX32, 1),
   HA_FOPTION_STRING("DATE_FORMAT", dateformat),
   HA_FOPTION_STRING("FIELD_FORMAT", fieldformat),
   HA_FOPTION_STRING("SPECIAL", special),
@@ -319,12 +319,12 @@ static uchar* connect_get_key(CONNECT_SHARE *share, size_t *length,
 }
 
 #ifdef HAVE_PSI_INTERFACE
-static PSI_mutex_key ex_key_mutex_connect, ex_key_mutex_CONNECT_SHARE_mutex;
+static PSI_mutex_key con_key_mutex_connect, con_key_mutex_CONNECT_SHARE_mutex;
 
 static PSI_mutex_info all_connect_mutexes[]=
 {
-  { &ex_key_mutex_connect, "connect", PSI_FLAG_GLOBAL},
-  { &ex_key_mutex_CONNECT_SHARE_mutex, "CONNECT_SHARE::mutex", 0}
+  { &con_key_mutex_connect, "connect", PSI_FLAG_GLOBAL},
+  { &con_key_mutex_CONNECT_SHARE_mutex, "CONNECT_SHARE::mutex", 0}
 };
 
 static void init_connect_psi_keys()
@@ -376,7 +376,7 @@ static int connect_init_func(void *p)
 #endif
 
   connect_hton= (handlerton *)p;
-  mysql_mutex_init(ex_key_mutex_connect, &connect_mutex, MY_MUTEX_INIT_FAST);
+  mysql_mutex_init(con_key_mutex_connect, &connect_mutex, MY_MUTEX_INIT_FAST);
 //VOID(mysql_mutex_init(&connect_mutex, MY_MUTEX_INIT_FAST));
   (void) my_hash_init(&connect_open_tables, system_charset_info, 32, 0, 0,
                    (my_hash_get_key) connect_get_key, 0, 0);
@@ -469,7 +469,7 @@ static CONNECT_SHARE *get_share(const char *table_name, TABLE *table)
       goto error;
 
     thr_lock_init(&share->lock);
-    mysql_mutex_init(ex_key_mutex_CONNECT_SHARE_mutex,
+    mysql_mutex_init(con_key_mutex_CONNECT_SHARE_mutex,
                      &share->mutex, MY_MUTEX_INIT_FAST);
     } // endif share
 
@@ -999,8 +999,8 @@ PFOS ha_connect::GetFieldOptionStruct(Field *fdp)
         fp->freq= atoi(val);
       } else if (!stricmp(pk, "opt")) {
         fp->opt= atoi(val);
-      } else if (!stricmp(pk, "buflen")) {
-        fp->buflen= atoi(val);
+      } else if (!stricmp(pk, "fldlen") || !stricmp(pk, "field_length")) {
+        fp->fldlen= atoi(val);
       } // endif's
 
       if (!pn)
@@ -1026,7 +1026,6 @@ PFOS ha_connect::GetFieldOptionStruct(Field *fdp)
 void *ha_connect::GetColumnOption(void *field, PCOLINFO pcf)
 {
   const char *cp;
-  int     len;
   ha_field_option_struct *fop;
   Field*  fp;
   Field* *fldp;
@@ -1095,6 +1094,11 @@ void *ha_connect::GetColumnOption(void *field, PCOLINFO pcf)
     case MYSQL_TYPE_DATETIME:
     case MYSQL_TYPE_TIMESTAMP:
       pcf->Type= TYPE_DATE;
+
+      // Field_length is only used for DATE columns
+      if (fop->fldlen)
+        pcf->Length= fop->fldlen;
+
       break;
     case MYSQL_TYPE_LONGLONG:
       pcf->Type= TYPE_BIGINT;
@@ -1121,11 +1125,6 @@ void *ha_connect::GetColumnOption(void *field, PCOLINFO pcf)
 //  pcf->Freq= fop->freq;
     pcf->Datefmt= (char*)fop->dateformat;
     pcf->Fieldfmt= (char*)fop->fieldformat;
-
-    // This is useful in particular for date columns
-    if ((len= fop->buflen) > pcf->Length)
-      pcf->Length= len;
-
   } else {
     pcf->Offset= -1;
 //  pcf->Freq= 0;
@@ -1524,6 +1523,7 @@ int ha_connect::ScanRecord(PGLOBAL g, uchar *buf)
 {
   char    attr_buffer[1024];
   char    data_buffer[1024];
+  char   *fmt;
   int     rc= 0;
   PCOL    colp;
   PVAL    value;
@@ -1573,7 +1573,18 @@ int ha_connect::ScanRecord(PGLOBAL g, uchar *buf)
             sdvalin= (DTVAL*)AllocateValue(xp->g, TYPE_DATE, 19);
 
             // Get date in the format produced by MySQL fields
-            ((DTVAL*)sdvalin)->SetFormat(g, "YYYY-MM-DD hh:mm:ss", 19);
+            switch (fp->type()) {
+              case MYSQL_TYPE_DATE:
+                fmt= "YYYY-MM-DD";
+                break;
+              case MYSQL_TYPE_TIME:
+                fmt= "hh:mm:ss";
+                break;
+              default:
+                fmt= "YYYY-MM-DD hh:mm:ss";
+              } // endswitch type
+
+            ((DTVAL*)sdvalin)->SetFormat(g, fmt, strlen(fmt));
             } // endif sdvalin
 
           fp->val_str(&attribute);
@@ -2266,7 +2277,7 @@ int ha_connect::index_init(uint idx, bool sorted)
   if (indexing <= 0) {
     DBUG_PRINT("index_init", (g->Message));
     printf("index_init CONNECT: %s\n", g->Message);
-    active_index= (uint)-1;
+    active_index= MAX_KEY;
     rc= -1;
   } else {
     if (((PTDBDOX)tdbp)->To_Kindex->GetNum_K()) {
@@ -2289,7 +2300,7 @@ int ha_connect::index_init(uint idx, bool sorted)
 int ha_connect::index_end()
 {
   DBUG_ENTER("index_end");
-  active_index= -1;
+  active_index= MAX_KEY;
   DBUG_RETURN(rnd_end());
 } // end of index_end