mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / storage / heap / hp_extra.c
blob0039703378cc8423a5bd8cc8e65bed71743099fe
1 /* Copyright (c) 2000, 2004-2006 MySQL AB
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; version 2 of the License.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 GNU General Public License for more details.
12 You should have received a copy of the GNU General Public License
13 along with this program; if not, write to the Free Software
14 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */
16 /* Extra functions we want to do with a database */
17 /* - Set flags for quicker databasehandler */
18 /* - Set databasehandler to normal */
19 /* - Reset recordpointers as after open database */
21 #include "heapdef.h"
23 static void heap_extra_keyflag(register HP_INFO *info,
24 enum ha_extra_function function);
27 /* set extra flags for database */
29 int heap_extra(register HP_INFO *info, enum ha_extra_function function)
31 DBUG_ENTER("heap_extra");
33 switch (function) {
34 case HA_EXTRA_RESET_STATE:
35 heap_reset(info);
36 case HA_EXTRA_NO_READCHECK:
37 info->opt_flag&= ~READ_CHECK_USED; /* No readcheck */
38 break;
39 case HA_EXTRA_READCHECK:
40 info->opt_flag|= READ_CHECK_USED;
41 break;
42 case HA_EXTRA_CHANGE_KEY_TO_UNIQUE:
43 case HA_EXTRA_CHANGE_KEY_TO_DUP:
44 heap_extra_keyflag(info, function);
45 break;
46 default:
47 break;
49 DBUG_RETURN(0);
50 } /* heap_extra */
53 int heap_reset(HP_INFO *info)
55 info->lastinx= -1;
56 info->current_record= (ulong) ~0L;
57 info->current_hash_ptr=0;
58 info->update=0;
59 info->next_block=0;
60 return 0;
65 Start/Stop Inserting Duplicates Into a Table, WL#1648.
67 static void heap_extra_keyflag(register HP_INFO *info,
68 enum ha_extra_function function)
70 uint idx;
72 for (idx= 0; idx< info->s->keys; idx++)
74 switch (function) {
75 case HA_EXTRA_CHANGE_KEY_TO_UNIQUE:
76 info->s->keydef[idx].flag|= HA_NOSAME;
77 break;
78 case HA_EXTRA_CHANGE_KEY_TO_DUP:
79 info->s->keydef[idx].flag&= ~(HA_NOSAME);
80 break;
81 default:
82 break;