hp_extra.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:2k
- /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
- /* Extra functions we want to do with a database */
- /* - Set flags for quicker databasehandler */
- /* - Set databasehandler to normal */
- /* - Reset recordpointers as after open database */
- #include "heapdef.h"
- static void heap_extra_keyflag(register HP_INFO *info,
- enum ha_extra_function function);
- /* set extra flags for database */
- int heap_extra(register HP_INFO *info, enum ha_extra_function function)
- {
- DBUG_ENTER("heap_extra");
- switch (function) {
- case HA_EXTRA_RESET:
- case HA_EXTRA_RESET_STATE:
- info->lastinx= -1;
- info->current_record= (ulong) ~0L;
- info->current_hash_ptr=0;
- info->update=0;
- break;
- case HA_EXTRA_NO_READCHECK:
- info->opt_flag&= ~READ_CHECK_USED; /* No readcheck */
- break;
- case HA_EXTRA_READCHECK:
- info->opt_flag|= READ_CHECK_USED;
- break;
- case HA_EXTRA_CHANGE_KEY_TO_UNIQUE:
- case HA_EXTRA_CHANGE_KEY_TO_DUP:
- heap_extra_keyflag(info, function);
- break;
- default:
- break;
- }
- DBUG_RETURN(0);
- } /* heap_extra */
- /*
- Start/Stop Inserting Duplicates Into a Table, WL#1648.
- */
- static void heap_extra_keyflag(register HP_INFO *info,
- enum ha_extra_function function)
- {
- uint idx;
- for (idx= 0; idx< info->s->keys; idx++)
- {
- switch (function) {
- case HA_EXTRA_CHANGE_KEY_TO_UNIQUE:
- info->s->keydef[idx].flag|= HA_NOSAME;
- break;
- case HA_EXTRA_CHANGE_KEY_TO_DUP:
- info->s->keydef[idx].flag&= ~(HA_NOSAME);
- break;
- default:
- break;
- }
- }
- }