summaryrefslogtreecommitdiff
path: root/storage/innobase/include/dict0crea.ic
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/include/dict0crea.ic')
-rw-r--r--storage/innobase/include/dict0crea.ic54
1 files changed, 51 insertions, 3 deletions
diff --git a/storage/innobase/include/dict0crea.ic b/storage/innobase/include/dict0crea.ic
index 1cbaa47032b..565e4ed1a8c 100644
--- a/storage/innobase/include/dict0crea.ic
+++ b/storage/innobase/include/dict0crea.ic
@@ -23,13 +23,14 @@ Database object creation
Created 1/8/1996 Heikki Tuuri
*******************************************************/
+#include "ha_prototypes.h"
+
#include "mem0mem.h"
/*********************************************************************//**
Checks if a table name contains the string "/#sql" which denotes temporary
tables in MySQL.
@return true if temporary table */
-UNIV_INTERN
bool
row_is_mysql_tmp_table_name(
/*========================*/
@@ -52,6 +53,8 @@ dict_create_add_foreign_id(
const char* name, /*!< in: table name */
dict_foreign_t* foreign)/*!< in/out: foreign key */
{
+ DBUG_ENTER("dict_create_add_foreign_id");
+
if (foreign->id == NULL) {
/* Generate a new constraint id */
ulint namelen = strlen(name);
@@ -87,12 +90,57 @@ dict_create_add_foreign_id(
if (innobase_check_identifier_length(
strchr(id,'/') + 1)) {
- return(DB_IDENTIFIER_TOO_LONG);
+ DBUG_RETURN(DB_IDENTIFIER_TOO_LONG);
}
}
foreign->id = id;
+
+ DBUG_PRINT("dict_create_add_foreign_id",
+ ("generated foreign id: %s", id));
}
- return(DB_SUCCESS);
+
+ DBUG_RETURN(DB_SUCCESS);
+}
+
+/** Compose a column number for a virtual column, stored in the "POS" field
+of Sys_columns. The column number includes both its virtual column sequence
+(the "nth" virtual column) and its actual column position in original table
+@param[in] v_pos virtual column sequence
+@param[in] col_pos column position in original table definition
+@return composed column position number */
+UNIV_INLINE
+ulint
+dict_create_v_col_pos(
+ ulint v_pos,
+ ulint col_pos)
+{
+ ut_ad(v_pos <= REC_MAX_N_FIELDS);
+ ut_ad(col_pos <= REC_MAX_N_FIELDS);
+
+ return(((v_pos + 1) << 16) + col_pos);
+}
+
+/** Get the column number for a virtual column (the column position in
+original table), stored in the "POS" field of Sys_columns
+@param[in] pos virtual column position
+@return column position in original table */
+UNIV_INLINE
+ulint
+dict_get_v_col_mysql_pos(
+ ulint pos)
+{
+ return(pos & 0xFFFF);
}
+/** Get a virtual column sequence (the "nth" virtual column) for a
+virtual column, stord in the "POS" field of Sys_columns
+@param[in] pos virtual column position
+@return virtual column sequence */
+UNIV_INLINE
+ulint
+dict_get_v_col_pos(
+ ulint pos)
+{
+ return((pos >> 16) - 1);
+}