~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/innobase/row/row0mysql.c

  • Committer: lbieber
  • Date: 2010-09-26 17:02:41 UTC
  • mfrom: (1794.1.1 build)
  • Revision ID: lbieber@orisndriz08-20100926170241-jp6ms41t9rlv2hrm
Merge Andrew - fix bug 646187 - MySQL privilege table errors still in InnoDB

Show diffs side-by-side

added added

removed removed

Lines of Context:
95
95
        ((str1_len) == sizeof(str2_onstack) \
96
96
         && memcmp(str1, str2_onstack, sizeof(str2_onstack)) == 0)
97
97
 
98
 
/*******************************************************************//**
99
 
Determine if the given name is a name reserved for MySQL system tables.
100
 
@return TRUE if name is a MySQL system table name */
101
 
static
102
 
ibool
103
 
row_mysql_is_system_table(
104
 
/*======================*/
105
 
        const char*     name)
106
 
{
107
 
        if (strncmp(name, "mysql/", 6) != 0) {
108
 
 
109
 
                return(FALSE);
110
 
        }
111
 
 
112
 
        return(0 == strcmp(name + 6, "host")
113
 
               || 0 == strcmp(name + 6, "user")
114
 
               || 0 == strcmp(name + 6, "db"));
115
 
}
116
 
 
117
98
/*********************************************************************//**
118
99
If a table is not yet in the drop list, adds the table to the list of tables
119
100
which the master thread drops in background. We need this on Unix because in
1793
1774
 
1794
1775
        trx->op_info = "creating table";
1795
1776
 
1796
 
        if (row_mysql_is_system_table(table->name)) {
1797
 
 
1798
 
                fprintf(stderr,
1799
 
                        "InnoDB: Error: trying to create a MySQL system"
1800
 
                        " table %s of type InnoDB.\n"
1801
 
                        "InnoDB: MySQL system tables must be"
1802
 
                        " of the MyISAM type!\n",
1803
 
                        table->name);
1804
 
                goto err_exit;
1805
 
        }
1806
 
 
1807
1777
        /* Check that no reserved column names are used. */
1808
1778
        for (i = 0; i < dict_table_get_n_user_cols(table); i++) {
1809
1779
                if (dict_col_name_is_reserved(
3648
3618
                      stderr);
3649
3619
 
3650
3620
                goto funct_exit;
3651
 
        } else if (row_mysql_is_system_table(new_name)) {
3652
 
 
3653
 
                fprintf(stderr,
3654
 
                        "InnoDB: Error: trying to create a MySQL"
3655
 
                        " system table %s of type InnoDB.\n"
3656
 
                        "InnoDB: MySQL system tables must be"
3657
 
                        " of the MyISAM type!\n",
3658
 
                        new_name);
3659
 
 
3660
 
                goto funct_exit;
3661
3621
        }
3662
3622
 
3663
3623
        trx->op_info = "renaming table";