Commit b2aea91f authored by Sergey Vojtovich's avatar Sergey Vojtovich

MDEV-4786 - merge 10.0-monty → 10.0

Fixed connect compilation failure.

storage/connect/csort.cpp:
  min/max are not defined by my_global.h anymore, include osutil.h instead.
storage/connect/filamfix.cpp:
  min/max are not defined by my_global.h anymore, include osutil.h instead.
storage/connect/ha_connect.cc:
  Renamed MYSQL_ERROR -> Sql_condition.
  Renamed KEY::key_parts -> KEY::user_defined_key_parts.
  Adjusted connect according to:
  WL#4305 - storage-engine private data area per physical table.
storage/connect/ha_connect.h:
  Adjusted connect according to:
  WL#4305 - storage-engine private data area per physical table.
storage/connect/inihandl.c:
  min/max are not defined by my_global.h anymore, include osutil.h instead.
storage/connect/osutil.h:
  min/max are not defined by my_global.h anymore, define them for C as well.
storage/connect/taboccur.cpp:
  Include server headers before osutil.h to avoid min/max redefinition.
storage/connect/tabpivot.cpp:
  Include server headers before osutil.h to avoid min/max redefinition.
storage/connect/tabtbl.cpp:
  Include server headers before osutil.h to avoid min/max redefinition.
storage/connect/tabxcl.cpp:
  Include server headers before osutil.h to avoid min/max redefinition.
storage/connect/value.cpp:
  min/max are not defined by my_global.h anymore, include osutil.h instead.
  Include server headers before osutil.h to avoid min/max redefinition.
parent 84d07384
...@@ -56,6 +56,7 @@ ...@@ -56,6 +56,7 @@
#include "global.h" #include "global.h"
#include "plgdbsem.h" /* For MBLOCK type definition */ #include "plgdbsem.h" /* For MBLOCK type definition */
#include "csort.h" /* CSort class definition */ #include "csort.h" /* CSort class definition */
#include "osutil.h"
#if !defined(BIGSORT) #if !defined(BIGSORT)
#define BIGSORT 200000 #define BIGSORT 200000
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "plgdbsem.h" #include "plgdbsem.h"
#include "filamfix.h" #include "filamfix.h"
#include "tabdos.h" #include "tabdos.h"
#include "osutil.h"
#ifndef INVALID_SET_FILE_POINTER #ifndef INVALID_SET_FILE_POINTER
#define INVALID_SET_FILE_POINTER 0xFFFFFFFF #define INVALID_SET_FILE_POINTER 0xFFFFFFFF
......
...@@ -265,7 +265,7 @@ bool PushWarning(PGLOBAL g, PTDBASE tdbp) ...@@ -265,7 +265,7 @@ bool PushWarning(PGLOBAL g, PTDBASE tdbp)
!(thd= (phc->GetTable())->in_use)) !(thd= (phc->GetTable())->in_use))
return true; return true;
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
return false; return false;
} // end of PushWarning } // end of PushWarning
...@@ -414,51 +414,25 @@ static int connect_done_func(void *p) ...@@ -414,51 +414,25 @@ static int connect_done_func(void *p)
they are needed to function. they are needed to function.
*/ */
static CONNECT_SHARE *get_share(const char *table_name, TABLE *table) CONNECT_SHARE *ha_connect::get_share()
{ {
CONNECT_SHARE *share; CONNECT_SHARE *tmp_share;
uint length; lock_shared_ha_data();
char *tmp_name; if (!(tmp_share= static_cast<CONNECT_SHARE*>(get_ha_share_ptr())))
{
length=(uint) strlen(table_name); tmp_share= new CONNECT_SHARE;
if (!tmp_share)
if (!(share= (CONNECT_SHARE *)table->s->ha_data)) { goto err;
if (!(share= (CONNECT_SHARE *)alloc_root(&table->s->mem_root, sizeof(*share) + length + 1)))
return NULL;
bzero(share, sizeof(*share));
tmp_name= (char*)(share + 1);
share->table_name_length=length;
share->table_name=tmp_name;
strmov(share->table_name, table_name);
thr_lock_init(&share->lock);
mysql_mutex_init(con_key_mutex_CONNECT_SHARE_mutex, mysql_mutex_init(con_key_mutex_CONNECT_SHARE_mutex,
&share->mutex, MY_MUTEX_INIT_FAST); &tmp_share->mutex, MY_MUTEX_INIT_FAST);
} // endif share set_ha_share_ptr(static_cast<Handler_share*>(tmp_share));
}
share->use_count++; err:
return share; unlock_shared_ha_data();
return tmp_share;
} }
/**
@brief
Free lock controls. We call this whenever we close a table. If the table had
the last reference to the share, then we free memory associated with it.
*/
static int free_share(CONNECT_SHARE *share)
{
if (!--share->use_count) {
thr_lock_delete(&share->lock);
mysql_mutex_destroy(&share->mutex);
TRASH(share, sizeof(*share));
} // endif share
return 0;
}
static handler* connect_create_handler(handlerton *hton, static handler* connect_create_handler(handlerton *hton,
TABLE_SHARE *table, TABLE_SHARE *table,
MEM_ROOT *mem_root) MEM_ROOT *mem_root)
...@@ -1017,7 +991,7 @@ PIXDEF ha_connect::GetIndexInfo(void) ...@@ -1017,7 +991,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
xdp= new(g) INDEXDEF(name, unique, n); xdp= new(g) INDEXDEF(name, unique, n);
// Get the the key parts info // Get the the key parts info
for (int k= 0; (unsigned)k < kp.key_parts; k++) { for (int k= 0; (unsigned)k < kp.user_defined_key_parts; k++) {
pn= (char*)kp.key_part[k].field->field_name; pn= (char*)kp.key_part[k].field->field_name;
name= (char*)PlugSubAlloc(g, NULL, strlen(pn) + 1); name= (char*)PlugSubAlloc(g, NULL, strlen(pn) + 1);
strcpy(name, pn); // This is probably unuseful strcpy(name, pn); // This is probably unuseful
...@@ -1029,7 +1003,7 @@ PIXDEF ha_connect::GetIndexInfo(void) ...@@ -1029,7 +1003,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
#if 0 // NIY #if 0 // NIY
// Index on auto increment column can be an XXROW index // Index on auto increment column can be an XXROW index
if (kp.key_part[k].field->flags & AUTO_INCREMENT_FLAG && if (kp.key_part[k].field->flags & AUTO_INCREMENT_FLAG &&
kp.key_parts == 1) { kp.uder_defined_key_parts == 1) {
char *type= GetStringOption("Type", "DOS"); char *type= GetStringOption("Type", "DOS");
TABTYPE typ= GetTypeID(type); TABTYPE typ= GetTypeID(type);
...@@ -1045,7 +1019,7 @@ PIXDEF ha_connect::GetIndexInfo(void) ...@@ -1045,7 +1019,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
pkp= kpp; pkp= kpp;
} // endfor k } // endfor k
xdp->SetNParts(kp.key_parts); xdp->SetNParts(kp.user_defined_key_parts);
if (pxd) if (pxd)
pxd->SetNext(xdp); pxd->SetNext(xdp);
...@@ -1875,7 +1849,7 @@ int ha_connect::open(const char *name, int mode, uint test_if_locked) ...@@ -1875,7 +1849,7 @@ int ha_connect::open(const char *name, int mode, uint test_if_locked)
if (xtrace) if (xtrace)
printf("open: name=%s mode=%d test=%ud\n", name, mode, test_if_locked); printf("open: name=%s mode=%d test=%ud\n", name, mode, test_if_locked);
if (!(share= get_share(name, table))) if (!(share= get_share()))
DBUG_RETURN(1); DBUG_RETURN(1);
thr_lock_data_init(&share->lock,&lock,NULL); thr_lock_data_init(&share->lock,&lock,NULL);
...@@ -1914,7 +1888,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt) ...@@ -1914,7 +1888,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt)
rc= HA_ERR_INTERNAL_ERROR; rc= HA_ERR_INTERNAL_ERROR;
} else if ((rc= ((PTDBASE)tdbp)->ResetTableOpt(g, true))) { } else if ((rc= ((PTDBASE)tdbp)->ResetTableOpt(g, true))) {
if (rc == RC_INFO) { if (rc == RC_INFO) {
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
rc= 0; rc= 0;
} else } else
rc = HA_ERR_INTERNAL_ERROR; rc = HA_ERR_INTERNAL_ERROR;
...@@ -1929,8 +1903,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt) ...@@ -1929,8 +1903,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt)
/** /**
@brief @brief
Closes a table. We call the free_share() function to free any resources Closes a table.
that we have allocated in the "shared" structure.
@details @details
Called from sql_base.cc, sql_select.cc, and table.cc. In sql_select.cc it is Called from sql_base.cc, sql_select.cc, and table.cc. In sql_select.cc it is
...@@ -1952,7 +1925,7 @@ int ha_connect::close(void) ...@@ -1952,7 +1925,7 @@ int ha_connect::close(void)
if (tdbp && xp->last_query_id == valid_query_id) if (tdbp && xp->last_query_id == valid_query_id)
rc= CloseTable(xp->g); rc= CloseTable(xp->g);
DBUG_RETURN(free_share(share) || rc); DBUG_RETURN(rc);
} // end of close } // end of close
...@@ -2939,7 +2912,7 @@ int ha_connect::external_lock(THD *thd, int lock_type) ...@@ -2939,7 +2912,7 @@ int ha_connect::external_lock(THD *thd, int lock_type)
// This is an error while builing index // This is an error while builing index
#if defined(_DEBUG) #if defined(_DEBUG)
// Make it a warning to avoid crash // Make it a warning to avoid crash
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
rc= 0; rc= 0;
#else // !_DEBUG #else // !_DEBUG
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0)); my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
...@@ -3494,7 +3467,7 @@ static int connect_assisted_discovery(handlerton *hton, THD* thd, ...@@ -3494,7 +3467,7 @@ static int connect_assisted_discovery(handlerton *hton, THD* thd,
topt->type= (src) ? "MYSQL" : (tab) ? "PROXY" : "DOS"; topt->type= (src) ? "MYSQL" : (tab) ? "PROXY" : "DOS";
ttp= GetTypeID(topt->type); ttp= GetTypeID(topt->type);
sprintf(g->Message, "No table_type. Was set to %s", topt->type); sprintf(g->Message, "No table_type. Was set to %s", topt->type);
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
} else if (ttp == TAB_NIY) { } else if (ttp == TAB_NIY) {
sprintf(g->Message, "Unsupported table type %s", topt->type); sprintf(g->Message, "Unsupported table type %s", topt->type);
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0)); my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
...@@ -3936,7 +3909,7 @@ int ha_connect::create(const char *name, TABLE *table_arg, ...@@ -3936,7 +3909,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
(options->tabname) ? "PROXY" : "DOS"; (options->tabname) ? "PROXY" : "DOS";
type= GetTypeID(options->type); type= GetTypeID(options->type);
sprintf(g->Message, "No table_type. Will be set to %s", options->type); sprintf(g->Message, "No table_type. Will be set to %s", options->type);
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
} else if (type == TAB_NIY) { } else if (type == TAB_NIY) {
sprintf(g->Message, "Unsupported table type %s", options->type); sprintf(g->Message, "Unsupported table type %s", options->type);
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0)); my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
...@@ -3979,7 +3952,7 @@ int ha_connect::create(const char *name, TABLE *table_arg, ...@@ -3979,7 +3952,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
case TAB_OCCUR: case TAB_OCCUR:
if (options->srcdef) { if (options->srcdef) {
strcpy(g->Message, "Cannot check looping reference"); strcpy(g->Message, "Cannot check looping reference");
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
} else if (options->tabname) { } else if (options->tabname) {
if (!stricmp(options->tabname, create_info->alias) && if (!stricmp(options->tabname, create_info->alias) &&
(!options->dbname || !stricmp(options->dbname, table_arg->s->db.str))) { (!options->dbname || !stricmp(options->dbname, table_arg->s->db.str))) {
...@@ -4178,7 +4151,7 @@ int ha_connect::create(const char *name, TABLE *table_arg, ...@@ -4178,7 +4151,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
strcat(strcat(buf, "."), lwt); strcat(strcat(buf, "."), lwt);
sprintf(g->Message, "No file name. Table will use %s", buf); sprintf(g->Message, "No file name. Table will use %s", buf);
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
strcat(strcat(strcpy(dbpath, "./"), table->s->db.str), "/"); strcat(strcat(strcpy(dbpath, "./"), table->s->db.str), "/");
PlugSetPath(fn, buf, dbpath); PlugSetPath(fn, buf, dbpath);
...@@ -4189,12 +4162,12 @@ int ha_connect::create(const char *name, TABLE *table_arg, ...@@ -4189,12 +4162,12 @@ int ha_connect::create(const char *name, TABLE *table_arg,
sprintf(g->Message, "Error %d creating file %s", errno, fn); sprintf(g->Message, "Error %d creating file %s", errno, fn);
push_warning(table->in_use, push_warning(table->in_use,
MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message); Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
} else } else
::close(h); ::close(h);
if (type == TAB_FMT || options->readonly) if (type == TAB_FMT || options->readonly)
push_warning(table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN, 0, push_warning(table->in_use, Sql_condition::WARN_LEVEL_WARN, 0,
"Congratulation, you just created a read-only void table!"); "Congratulation, you just created a read-only void table!");
} // endif buf } // endif buf
...@@ -4207,7 +4180,7 @@ int ha_connect::create(const char *name, TABLE *table_arg, ...@@ -4207,7 +4180,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
// We should be in CREATE TABLE // We should be in CREATE TABLE
if (thd_sql_command(table->in_use) != SQLCOM_CREATE_TABLE) if (thd_sql_command(table->in_use) != SQLCOM_CREATE_TABLE)
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0,
"Wrong command in create, please contact CONNECT team"); "Wrong command in create, please contact CONNECT team");
// Get the index definitions // Get the index definitions
...@@ -4260,7 +4233,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info, ...@@ -4260,7 +4233,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info,
// TO DO: really implement and check it. // TO DO: really implement and check it.
THD *thd= current_thd; THD *thd= current_thd;
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0,
"The current version of CONNECT did not check what you changed in ALTER. Use at your own risk"); "The current version of CONNECT did not check what you changed in ALTER. Use at your own risk");
if (table) { if (table) {
...@@ -4273,7 +4246,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info, ...@@ -4273,7 +4246,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info,
PGLOBAL g= GetPlug(thd); PGLOBAL g= GetPlug(thd);
if (!g) if (!g)
push_warning(thd, MYSQL_ERROR::WARN_LEVEL_WARN, 0, push_warning(thd, Sql_condition::WARN_LEVEL_WARN, 0,
"Execute OPTIMIZE TABLE to remake the indexes"); "Execute OPTIMIZE TABLE to remake the indexes");
else else
g->Xchk= new(g) XCHK; g->Xchk= new(g) XCHK;
......
...@@ -123,12 +123,20 @@ struct ha_field_option_struct ...@@ -123,12 +123,20 @@ struct ha_field_option_struct
CONNECT_SHARE is a structure that will be shared among all open handlers. CONNECT_SHARE is a structure that will be shared among all open handlers.
This example implements the minimum of what you will probably need. This example implements the minimum of what you will probably need.
*/ */
typedef struct st_connect_share { class CONNECT_SHARE : public Handler_share {
char *table_name; public:
uint table_name_length, use_count;
mysql_mutex_t mutex; mysql_mutex_t mutex;
THR_LOCK lock; THR_LOCK lock;
} CONNECT_SHARE; CONNECT_SHARE()
{
thr_lock_init(&lock);
}
~CONNECT_SHARE()
{
thr_lock_delete(&lock);
mysql_mutex_destroy(&mutex);
}
};
typedef class ha_connect *PHC; typedef class ha_connect *PHC;
...@@ -139,6 +147,7 @@ class ha_connect: public handler ...@@ -139,6 +147,7 @@ class ha_connect: public handler
{ {
THR_LOCK_DATA lock; ///< MySQL lock THR_LOCK_DATA lock; ///< MySQL lock
CONNECT_SHARE *share; ///< Shared lock info CONNECT_SHARE *share; ///< Shared lock info
CONNECT_SHARE *get_share();
public: public:
ha_connect(handlerton *hton, TABLE_SHARE *table_arg); ha_connect(handlerton *hton, TABLE_SHARE *table_arg);
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
//#include <sys/types.h> //#include <sys/types.h>
//#include <memory.h> //#include <memory.h>
#include "my_global.h" #include "my_global.h"
#include "osutil.h"
#include "global.h" #include "global.h"
#include "inihandl.h" #include "inihandl.h"
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#define MB_OK 0x00000000 #define MB_OK 0x00000000
#if defined(__cplusplus)
#if !defined(__MINMAX_DEFINED) #if !defined(__MINMAX_DEFINED)
#define __MINMAX_DEFINED #define __MINMAX_DEFINED
#ifndef max #ifndef max
...@@ -19,7 +18,6 @@ ...@@ -19,7 +18,6 @@
#define min(x,y) (((x)<(y))?(x):(y)) #define min(x,y) (((x)<(y))?(x):(y))
#endif #endif
#endif #endif
#endif /* __cplusplus */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
/* Include relevant section of system dependant header files. */ /* Include relevant section of system dependant header files. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32) #if defined(WIN32)
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
...@@ -36,7 +37,6 @@ ...@@ -36,7 +37,6 @@
/***********************************************************************/ /***********************************************************************/
/* Include application header files: */ /* Include application header files: */
/***********************************************************************/ /***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h" #include "global.h"
#include "plgdbsem.h" #include "plgdbsem.h"
#include "reldef.h" #include "reldef.h"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
/* Include relevant sections of the operating system header file. */ /* Include relevant sections of the operating system header file. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32) #if defined(WIN32)
#if defined(__BORLANDC__) #if defined(__BORLANDC__)
#define __MFC_COMPAT__ // To define min/max as macro #define __MFC_COMPAT__ // To define min/max as macro
...@@ -35,7 +36,6 @@ ...@@ -35,7 +36,6 @@
/* plgdbsem.h is header containing the DB application declarations. */ /* plgdbsem.h is header containing the DB application declarations. */
/***********************************************************************/ /***********************************************************************/
#define FRM_VER 6 #define FRM_VER 6
#include "table.h" // MySQL table definitions
#include "sql_const.h" #include "sql_const.h"
#include "field.h" #include "field.h"
#include "global.h" #include "global.h"
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
/***********************************************************************/ /***********************************************************************/
//#include "sql_base.h" //#include "sql_base.h"
#include "my_global.h" #include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32) #if defined(WIN32)
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
...@@ -62,7 +63,6 @@ ...@@ -62,7 +63,6 @@
/***********************************************************************/ /***********************************************************************/
/* Include application header files: */ /* Include application header files: */
/***********************************************************************/ /***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h" // global declarations #include "global.h" // global declarations
#include "plgdbsem.h" // DB application declarations #include "plgdbsem.h" // DB application declarations
#include "reldef.h" // DB definition declares #include "reldef.h" // DB definition declares
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
/* Include relevant section of system dependant header files. */ /* Include relevant section of system dependant header files. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32) #if defined(WIN32)
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
...@@ -40,7 +41,6 @@ ...@@ -40,7 +41,6 @@
/***********************************************************************/ /***********************************************************************/
/* Include application header files: */ /* Include application header files: */
/***********************************************************************/ /***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h" #include "global.h"
#include "plgdbsem.h" #include "plgdbsem.h"
#include "plgcnx.h" // For DB types #include "plgcnx.h" // For DB types
......
...@@ -27,6 +27,9 @@ ...@@ -27,6 +27,9 @@
/* Include relevant MariaDB header file. */ /* Include relevant MariaDB header file. */
/***********************************************************************/ /***********************************************************************/
#include "my_global.h" #include "my_global.h"
#include "sql_class.h"
#include "sql_time.h"
#if defined(WIN32) #if defined(WIN32)
//#include <windows.h> //#include <windows.h>
#else // !WIN32 #else // !WIN32
...@@ -49,6 +52,7 @@ ...@@ -49,6 +52,7 @@
#include "valblk.h" #include "valblk.h"
#define NO_FUNC // Already defined in ODBConn #define NO_FUNC // Already defined in ODBConn
#include "plgcnx.h" // For DB types #include "plgcnx.h" // For DB types
#include "osutil.h"
/***********************************************************************/ /***********************************************************************/
/* Check macro's. */ /* Check macro's. */
...@@ -1249,9 +1253,6 @@ void DTVAL::SetTimeShift(void) ...@@ -1249,9 +1253,6 @@ void DTVAL::SetTimeShift(void)
/* though the gmtime C function. The purpose of this function is to */ /* though the gmtime C function. The purpose of this function is to */
/* extend the range of valid dates by accepting negative time values. */ /* extend the range of valid dates by accepting negative time values. */
/***********************************************************************/ /***********************************************************************/
#include "sql_class.h"
#include "sql_time.h"
static void TIME_to_localtime(struct tm *tm, const MYSQL_TIME *ltime) static void TIME_to_localtime(struct tm *tm, const MYSQL_TIME *ltime)
{ {
bzero(tm, sizeof(*tm)); bzero(tm, sizeof(*tm));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment