~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/lock.cc

  • Committer: Brian Aker
  • Date: 2008-08-14 22:05:07 UTC
  • Revision ID: brian@tangent.org-20080814220507-vu3rm1f067qc03r7
Remove server based system tables (we no longer have them).

Show diffs side-by-side

added added

removed removed

Lines of Context:
121
121
static int thr_lock_errno_to_mysql[]=
122
122
{ 0, 1, ER_LOCK_WAIT_TIMEOUT, ER_LOCK_DEADLOCK };
123
123
 
124
 
/**
125
 
  Perform semantic checks for mysql_lock_tables.
126
 
  @param thd The current thread
127
 
  @param tables The tables to lock
128
 
  @param count The number of tables to lock
129
 
  @param flags Lock flags
130
 
  @return 0 if all the check passed, non zero if a check failed.
131
 
*/
132
 
int mysql_lock_tables_check(THD *thd __attribute__((unused)),
133
 
                            TABLE **tables, uint count,
134
 
                            uint flags __attribute__((unused)))
135
 
{
136
 
  uint system_count;
137
 
  uint i;
138
 
 
139
 
  system_count= 0;
140
 
 
141
 
  for (i=0 ; i<count; i++)
142
 
  {
143
 
    TABLE *t= tables[i];
144
 
 
145
 
    /* Protect against 'fake' partially initialized TABLE_SHARE */
146
 
    assert(t->s->table_category != TABLE_UNKNOWN_CATEGORY);
147
 
 
148
 
    if ((t->s->table_category == TABLE_CATEGORY_SYSTEM) &&
149
 
        (t->reginfo.lock_type >= TL_WRITE_ALLOW_WRITE))
150
 
    {
151
 
      system_count++;
152
 
    }
153
 
  }
154
 
 
155
 
  /*
156
 
    Locking of system tables is restricted:
157
 
    locking a mix of system and non-system tables in the same lock
158
 
    is prohibited, to prevent contention.
159
 
  */
160
 
  if ((system_count > 0) && (system_count < count))
161
 
  {
162
 
    my_error(ER_WRONG_LOCK_OF_SYSTEM_TABLE, MYF(0));
163
 
    return(1);
164
 
  }
165
 
 
166
 
  return(0);
167
 
}
168
 
 
169
124
 
170
125
/**
171
126
  Reset lock type in lock data and free.
214
169
 
215
170
  *need_reopen= false;
216
171
 
217
 
  if (mysql_lock_tables_check(thd, tables, count, flags))
218
 
    return (NULL);
219
 
 
220
172
  for (;;)
221
173
  {
222
174
    if (! (sql_lock= get_lock_data(thd, tables, count, GET_LOCK_STORE_LOCKS,