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 @@
#include "global.h"
#include "plgdbsem.h" /* For MBLOCK type definition */
#include "csort.h" /* CSort class definition */
#include "osutil.h"
#if !defined(BIGSORT)
#define BIGSORT 200000
......
......@@ -46,6 +46,7 @@
#include "plgdbsem.h"
#include "filamfix.h"
#include "tabdos.h"
#include "osutil.h"
#ifndef INVALID_SET_FILE_POINTER
#define INVALID_SET_FILE_POINTER 0xFFFFFFFF
......
......@@ -265,7 +265,7 @@ bool PushWarning(PGLOBAL g, PTDBASE tdbp)
!(thd= (phc->GetTable())->in_use))
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;
} // end of PushWarning
......@@ -414,51 +414,25 @@ static int connect_done_func(void *p)
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;
uint length;
char *tmp_name;
length=(uint) strlen(table_name);
if (!(share= (CONNECT_SHARE *)table->s->ha_data)) {
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);
CONNECT_SHARE *tmp_share;
lock_shared_ha_data();
if (!(tmp_share= static_cast<CONNECT_SHARE*>(get_ha_share_ptr())))
{
tmp_share= new CONNECT_SHARE;
if (!tmp_share)
goto err;
mysql_mutex_init(con_key_mutex_CONNECT_SHARE_mutex,
&share->mutex, MY_MUTEX_INIT_FAST);
} // endif share
share->use_count++;
return share;
&tmp_share->mutex, MY_MUTEX_INIT_FAST);
set_ha_share_ptr(static_cast<Handler_share*>(tmp_share));
}
err:
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,
TABLE_SHARE *table,
MEM_ROOT *mem_root)
......@@ -1017,7 +991,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
xdp= new(g) INDEXDEF(name, unique, n);
// 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;
name= (char*)PlugSubAlloc(g, NULL, strlen(pn) + 1);
strcpy(name, pn); // This is probably unuseful
......@@ -1029,7 +1003,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
#if 0 // NIY
// Index on auto increment column can be an XXROW index
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");
TABTYPE typ= GetTypeID(type);
......@@ -1045,7 +1019,7 @@ PIXDEF ha_connect::GetIndexInfo(void)
pkp= kpp;
} // endfor k
xdp->SetNParts(kp.key_parts);
xdp->SetNParts(kp.user_defined_key_parts);
if (pxd)
pxd->SetNext(xdp);
......@@ -1875,7 +1849,7 @@ int ha_connect::open(const char *name, int mode, uint test_if_locked)
if (xtrace)
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);
thr_lock_data_init(&share->lock,&lock,NULL);
......@@ -1914,7 +1888,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt)
rc= HA_ERR_INTERNAL_ERROR;
} else if ((rc= ((PTDBASE)tdbp)->ResetTableOpt(g, true))) {
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;
} else
rc = HA_ERR_INTERNAL_ERROR;
......@@ -1929,8 +1903,7 @@ int ha_connect::optimize(THD* thd, HA_CHECK_OPT* check_opt)
/**
@brief
Closes a table. We call the free_share() function to free any resources
that we have allocated in the "shared" structure.
Closes a table.
@details
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)
if (tdbp && xp->last_query_id == valid_query_id)
rc= CloseTable(xp->g);
DBUG_RETURN(free_share(share) || rc);
DBUG_RETURN(rc);
} // end of close
......@@ -2939,7 +2912,7 @@ int ha_connect::external_lock(THD *thd, int lock_type)
// This is an error while builing index
#if defined(_DEBUG)
// 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;
#else // !_DEBUG
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
......@@ -3494,7 +3467,7 @@ static int connect_assisted_discovery(handlerton *hton, THD* thd,
topt->type= (src) ? "MYSQL" : (tab) ? "PROXY" : "DOS";
ttp= GetTypeID(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) {
sprintf(g->Message, "Unsupported table type %s", topt->type);
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
......@@ -3936,7 +3909,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
(options->tabname) ? "PROXY" : "DOS";
type= GetTypeID(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) {
sprintf(g->Message, "Unsupported table type %s", options->type);
my_message(ER_UNKNOWN_ERROR, g->Message, MYF(0));
......@@ -3979,7 +3952,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
case TAB_OCCUR:
if (options->srcdef) {
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) {
if (!stricmp(options->tabname, create_info->alias) &&
(!options->dbname || !stricmp(options->dbname, table_arg->s->db.str))) {
......@@ -4178,7 +4151,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
strcat(strcat(buf, "."), lwt);
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), "/");
PlugSetPath(fn, buf, dbpath);
......@@ -4189,12 +4162,12 @@ int ha_connect::create(const char *name, TABLE *table_arg,
sprintf(g->Message, "Error %d creating file %s", errno, fn);
push_warning(table->in_use,
MYSQL_ERROR::WARN_LEVEL_WARN, 0, g->Message);
Sql_condition::WARN_LEVEL_WARN, 0, g->Message);
} else
::close(h);
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!");
} // endif buf
......@@ -4207,7 +4180,7 @@ int ha_connect::create(const char *name, TABLE *table_arg,
// We should be in 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");
// Get the index definitions
......@@ -4260,7 +4233,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info,
// TO DO: really implement and check it.
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");
if (table) {
......@@ -4273,7 +4246,7 @@ bool ha_connect::check_if_incompatible_data(HA_CREATE_INFO *info,
PGLOBAL g= GetPlug(thd);
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");
else
g->Xchk= new(g) XCHK;
......
......@@ -123,12 +123,20 @@ struct ha_field_option_struct
CONNECT_SHARE is a structure that will be shared among all open handlers.
This example implements the minimum of what you will probably need.
*/
typedef struct st_connect_share {
char *table_name;
uint table_name_length, use_count;
class CONNECT_SHARE : public Handler_share {
public:
mysql_mutex_t mutex;
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;
......@@ -139,6 +147,7 @@ class ha_connect: public handler
{
THR_LOCK_DATA lock; ///< MySQL lock
CONNECT_SHARE *share; ///< Shared lock info
CONNECT_SHARE *get_share();
public:
ha_connect(handlerton *hton, TABLE_SHARE *table_arg);
......
......@@ -29,6 +29,7 @@
//#include <sys/types.h>
//#include <memory.h>
#include "my_global.h"
#include "osutil.h"
#include "global.h"
#include "inihandl.h"
......
......@@ -9,7 +9,6 @@
#define MB_OK 0x00000000
#if defined(__cplusplus)
#if !defined(__MINMAX_DEFINED)
#define __MINMAX_DEFINED
#ifndef max
......@@ -19,7 +18,6 @@
#define min(x,y) (((x)<(y))?(x):(y))
#endif
#endif
#endif /* __cplusplus */
#ifdef __cplusplus
extern "C" {
......
......@@ -12,6 +12,7 @@
/* Include relevant section of system dependant header files. */
/***********************************************************************/
#include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32)
#include <stdlib.h>
#include <stdio.h>
......@@ -36,7 +37,6 @@
/***********************************************************************/
/* Include application header files: */
/***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h"
#include "plgdbsem.h"
#include "reldef.h"
......
......@@ -16,6 +16,7 @@
/* Include relevant sections of the operating system header file. */
/***********************************************************************/
#include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32)
#if defined(__BORLANDC__)
#define __MFC_COMPAT__ // To define min/max as macro
......@@ -35,7 +36,6 @@
/* plgdbsem.h is header containing the DB application declarations. */
/***********************************************************************/
#define FRM_VER 6
#include "table.h" // MySQL table definitions
#include "sql_const.h"
#include "field.h"
#include "global.h"
......
......@@ -38,6 +38,7 @@
/***********************************************************************/
//#include "sql_base.h"
#include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32)
#include <stdlib.h>
#include <stdio.h>
......@@ -62,7 +63,6 @@
/***********************************************************************/
/* Include application header files: */
/***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h" // global declarations
#include "plgdbsem.h" // DB application declarations
#include "reldef.h" // DB definition declares
......
......@@ -16,6 +16,7 @@
/* Include relevant section of system dependant header files. */
/***********************************************************************/
#include "my_global.h"
#include "table.h" // MySQL table definitions
#if defined(WIN32)
#include <stdlib.h>
#include <stdio.h>
......@@ -40,7 +41,6 @@
/***********************************************************************/
/* Include application header files: */
/***********************************************************************/
#include "table.h" // MySQL table definitions
#include "global.h"
#include "plgdbsem.h"
#include "plgcnx.h" // For DB types
......
......@@ -27,6 +27,9 @@
/* Include relevant MariaDB header file. */
/***********************************************************************/
#include "my_global.h"
#include "sql_class.h"
#include "sql_time.h"
#if defined(WIN32)
//#include <windows.h>
#else // !WIN32
......@@ -49,6 +52,7 @@
#include "valblk.h"
#define NO_FUNC // Already defined in ODBConn
#include "plgcnx.h" // For DB types
#include "osutil.h"
/***********************************************************************/
/* Check macro's. */
......@@ -1249,9 +1253,6 @@ void DTVAL::SetTimeShift(void)
/* though the gmtime C function. The purpose of this function is to */
/* 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)
{
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