mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 22:12:30 +01:00
branches/zip: Merge revisions 459:465 from trunk.
This commit is contained in:
parent
450bbd7c3b
commit
f72f850b79
10 changed files with 91 additions and 35 deletions
|
@ -75,7 +75,7 @@ dict_create_sys_tables_tuple(
|
|||
dfield = dtuple_get_nth_field(entry, 3);
|
||||
|
||||
ptr = mem_heap_alloc(heap, 4);
|
||||
mach_write_to_4(ptr, table->type);
|
||||
mach_write_to_4(ptr, DICT_TABLE_ORDINARY);
|
||||
|
||||
dfield_set_data(dfield, ptr, 4);
|
||||
/* 6: MIX_ID ---------------------------*/
|
||||
|
@ -1256,7 +1256,7 @@ dict_create_or_check_foreign_constraint_tables(void)
|
|||
}
|
||||
|
||||
/********************************************************************
|
||||
Evaluate the given SQL statement. */
|
||||
Evaluate the given foreign key SQL statement. */
|
||||
|
||||
ulint
|
||||
dict_foreign_eval_sql(
|
||||
|
@ -1268,26 +1268,10 @@ dict_foreign_eval_sql(
|
|||
dict_foreign_t* foreign,/* in: foreign */
|
||||
trx_t* trx) /* in: transaction */
|
||||
{
|
||||
que_thr_t* thr;
|
||||
que_t* graph;
|
||||
ulint error;
|
||||
FILE* ef = dict_foreign_err_file;
|
||||
|
||||
graph = pars_sql(info, sql);
|
||||
ut_a(graph);
|
||||
|
||||
graph->trx = trx;
|
||||
trx->graph = NULL;
|
||||
|
||||
graph->fork_type = QUE_FORK_MYSQL_INTERFACE;
|
||||
|
||||
ut_a(thr = que_fork_start_command(graph));
|
||||
|
||||
que_run_threads(thr);
|
||||
|
||||
error = trx->error_state;
|
||||
|
||||
que_graph_free(graph);
|
||||
error = que_eval_sql(info, sql, trx);
|
||||
|
||||
if (error == DB_DUPLICATE_KEY) {
|
||||
mutex_enter(&dict_foreign_err_mutex);
|
||||
|
|
|
@ -1716,8 +1716,6 @@ dict_table_copy_types(
|
|||
dtype_t* type;
|
||||
ulint i;
|
||||
|
||||
ut_ad(!(table->type & DICT_UNIVERSAL));
|
||||
|
||||
for (i = 0; i < dtuple_get_n_fields(tuple); i++) {
|
||||
|
||||
dfield_type = dfield_get_type(dtuple_get_nth_field(tuple, i));
|
||||
|
@ -1766,8 +1764,6 @@ dict_index_build_internal_clust(
|
|||
|
||||
new_index->id = index->id;
|
||||
|
||||
ut_a(table->type == DICT_TABLE_ORDINARY);
|
||||
|
||||
/* Copy the fields of index */
|
||||
dict_index_copy(new_index, index, 0, index->n_fields);
|
||||
|
||||
|
|
|
@ -768,7 +768,7 @@ dict_load_table(
|
|||
if (!btr_pcur_is_on_user_rec(&pcur, &mtr)
|
||||
|| rec_get_deleted_flag(rec, 0)) {
|
||||
/* Not found */
|
||||
|
||||
err_exit:
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
mem_heap_free(heap);
|
||||
|
@ -780,11 +780,8 @@ dict_load_table(
|
|||
|
||||
/* Check if the table name in record is the searched one */
|
||||
if (len != ut_strlen(name) || ut_memcmp(name, field, len) != 0) {
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
mem_heap_free(heap);
|
||||
|
||||
return(NULL);
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
ut_a(0 == ut_strcmp("SPACE",
|
||||
|
@ -848,8 +845,13 @@ dict_load_table(
|
|||
table->id = mach_read_from_8(field);
|
||||
|
||||
field = rec_get_nth_field_old(rec, 5, &len);
|
||||
table->type = mach_read_from_4(field);
|
||||
ut_a(table->type == DICT_TABLE_ORDINARY);
|
||||
if (UNIV_UNLIKELY(mach_read_from_4(field) != DICT_TABLE_ORDINARY)) {
|
||||
ut_print_timestamp(stderr);
|
||||
fprintf(stderr,
|
||||
" InnoDB: table %s: unknown table type %lu\n",
|
||||
name, (ulong) mach_read_from_4(field));
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
btr_pcur_close(&pcur);
|
||||
mtr_commit(&mtr);
|
||||
|
|
|
@ -50,7 +50,6 @@ dict_mem_table_create(
|
|||
|
||||
table->heap = heap;
|
||||
|
||||
table->type = DICT_TABLE_ORDINARY;
|
||||
table->flags = flags;
|
||||
table->name = mem_heap_strdup(heap, name);
|
||||
table->dir_path_of_temp_table = NULL;
|
||||
|
|
|
@ -946,7 +946,6 @@ dict_tables_have_same_db(
|
|||
dbname '/' tablename */
|
||||
const char* name2); /* in: table name in the form
|
||||
dbname '/' tablename */
|
||||
|
||||
/*************************************************************************
|
||||
Scans from pointer onwards. Stops if is at the start of a copy of
|
||||
'string' where characters are compared without case sensitivity. Stops
|
||||
|
@ -958,7 +957,6 @@ dict_scan_to(
|
|||
/* out: scanned up to this */
|
||||
const char* ptr, /* in: scan from */
|
||||
const char* string);/* in: look for this */
|
||||
|
||||
/* Buffers for storing detailed information about the latest foreign key
|
||||
and unique key errors */
|
||||
extern FILE* dict_foreign_err_file;
|
||||
|
|
|
@ -282,7 +282,6 @@ a foreign key constraint is enforced, therefore RESTRICT just means no flag */
|
|||
/* Data structure for a database table */
|
||||
struct dict_table_struct{
|
||||
dulint id; /* id of the table */
|
||||
ulint type; /* DICT_TABLE_ORDINARY, ... */
|
||||
ulint flags; /* DICT_TF_COMPACT, ... */
|
||||
mem_heap_t* heap; /* memory heap */
|
||||
const char* name; /* table name */
|
||||
|
|
|
@ -505,6 +505,22 @@ pars_info_add_int4_literal(
|
|||
lint val); /* in: value */
|
||||
|
||||
/********************************************************************
|
||||
Equivalent to:
|
||||
|
||||
char buf[8];
|
||||
mach_write_to_8(buf, val);
|
||||
pars_info_add_literal(info, name, buf, 8, DATA_BINARY, 0);
|
||||
|
||||
except that the buffer is dynamically allocated from the info struct's
|
||||
heap. */
|
||||
|
||||
void
|
||||
pars_info_add_dulint_literal(
|
||||
/*=========================*/
|
||||
pars_info_t* info, /* in: info struct */
|
||||
const char* name, /* in: name */
|
||||
dulint val); /* in: value */
|
||||
/********************************************************************
|
||||
Add user function. */
|
||||
|
||||
void
|
||||
|
|
|
@ -331,8 +331,15 @@ void
|
|||
que_node_print_info(
|
||||
/*================*/
|
||||
que_node_t* node); /* in: query graph node */
|
||||
/*************************************************************************
|
||||
Evaluate the given SQL */
|
||||
|
||||
|
||||
ulint
|
||||
que_eval_sql(
|
||||
/*=========*/
|
||||
pars_info_t* info, /* out: error code or DB_SUCCESS */
|
||||
const char* sql, /* in: info struct, or NULL */
|
||||
trx_t* trx); /* in: trx */
|
||||
/* Query graph query thread node: the fields are protected by the kernel
|
||||
mutex with the exceptions named below */
|
||||
|
||||
|
|
|
@ -2016,6 +2016,30 @@ pars_info_add_int4_literal(
|
|||
pars_info_add_literal(info, name, buf, 4, DATA_INT, 0);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Equivalent to:
|
||||
|
||||
char buf[8];
|
||||
mach_write_to_8(buf, val);
|
||||
pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
|
||||
|
||||
except that the buffer is dynamically allocated from the info struct's
|
||||
heap. */
|
||||
|
||||
void
|
||||
pars_info_add_dulint_literal(
|
||||
/*=========================*/
|
||||
pars_info_t* info, /* in: info struct */
|
||||
const char* name, /* in: name */
|
||||
dulint val) /* in: value */
|
||||
{
|
||||
byte* buf = mem_heap_alloc(info->heap, 8);
|
||||
|
||||
mach_write_to_8(buf, val);
|
||||
|
||||
pars_info_add_literal(info, name, buf, 8, DATA_FIXBINARY, 0);
|
||||
}
|
||||
|
||||
/********************************************************************
|
||||
Add user function. */
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ Created 5/27/1996 Heikki Tuuri
|
|||
#include "log0log.h"
|
||||
#include "eval0proc.h"
|
||||
#include "eval0eval.h"
|
||||
#include "pars0types.h"
|
||||
|
||||
#define QUE_PARALLELIZE_LIMIT (64 * 256 * 256 * 256)
|
||||
#define QUE_ROUND_ROBIN_LIMIT (64 * 256 * 256 * 256)
|
||||
|
@ -1365,3 +1366,33 @@ loop:
|
|||
|
||||
goto loop;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
Evaluate the given SQL */
|
||||
|
||||
ulint
|
||||
que_eval_sql(
|
||||
/*=========*/
|
||||
pars_info_t* info, /* out: error code or DB_SUCCESS */
|
||||
const char* sql, /* in: info struct, or NULL */
|
||||
trx_t* trx) /* in: trx */
|
||||
{
|
||||
que_thr_t* thr;
|
||||
que_t* graph;
|
||||
|
||||
graph = pars_sql(info, sql);
|
||||
ut_a(graph);
|
||||
|
||||
graph->trx = trx;
|
||||
trx->graph = NULL;
|
||||
|
||||
graph->fork_type = QUE_FORK_MYSQL_INTERFACE;
|
||||
|
||||
ut_a(thr = que_fork_start_command(graph));
|
||||
|
||||
que_run_threads(thr);
|
||||
|
||||
que_graph_free(graph);
|
||||
|
||||
return(trx->error_state);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue