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 */
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");
34 case HA_EXTRA_RESET_STATE
:
36 case HA_EXTRA_NO_READCHECK
:
37 info
->opt_flag
&= ~READ_CHECK_USED
; /* No readcheck */
39 case HA_EXTRA_READCHECK
:
40 info
->opt_flag
|= READ_CHECK_USED
;
42 case HA_EXTRA_CHANGE_KEY_TO_UNIQUE
:
43 case HA_EXTRA_CHANGE_KEY_TO_DUP
:
44 heap_extra_keyflag(info
, function
);
53 int heap_reset(HP_INFO
*info
)
56 info
->current_record
= (ulong
) ~0L;
57 info
->current_hash_ptr
=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
)
72 for (idx
= 0; idx
< info
->s
->keys
; idx
++)
75 case HA_EXTRA_CHANGE_KEY_TO_UNIQUE
:
76 info
->s
->keydef
[idx
].flag
|= HA_NOSAME
;
78 case HA_EXTRA_CHANGE_KEY_TO_DUP
:
79 info
->s
->keydef
[idx
].flag
&= ~(HA_NOSAME
);