myrg_locking.c 1.41 KB
Newer Older
unknown's avatar
unknown committed
1
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
unknown's avatar
unknown committed
2

unknown's avatar
unknown committed
3 4 5 6
   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.
unknown's avatar
unknown committed
7

unknown's avatar
unknown committed
8 9 10 11
   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.
unknown's avatar
unknown committed
12

unknown's avatar
unknown committed
13 14 15 16 17 18 19 20
   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 */

/*
  Lock databases against read or write.
*/

21
#include "myrg_def.h"
unknown's avatar
unknown committed
22

23
int myrg_lock_database(MYRG_INFO *info, int lock_type)
unknown's avatar
unknown committed
24 25 26 27 28
{
  int error,new_error;
  MYRG_TABLE *file;

  error=0;
29 30 31 32 33 34 35 36 37 38 39
  for (file=info->open_tables ; file != info->end_table ; file++) 
  {
#ifdef __WIN__
    /*
      Make sure this table is marked as owned by a merge table.
      The semaphore is never released as long as table remains
      in memory. This should be refactored into a more generic
      approach (observer pattern)
     */
    (file->table)->owned_by_merge = TRUE;
#endif
unknown's avatar
unknown committed
40 41
    if ((new_error=mi_lock_database(file->table,lock_type)))
      error=new_error;
42
  }
unknown's avatar
unknown committed
43 44
  return(error);
}