1 /* 2 Copyright (c) 2011, 2021, Oracle and/or its affiliates. 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License, version 2.0, 6 as published by the Free Software Foundation. 7 8 This program is also distributed with certain software (including 9 but not limited to OpenSSL) that is licensed under separate terms, 10 as designated in a particular file or component or in included license 11 documentation. The authors of MySQL hereby grant you an additional 12 permission to link the program and your derivative works with the 13 separately licensed software that they have included with MySQL. 14 15 This program is distributed in the hope that it will be useful, 16 but WITHOUT ANY WARRANTY; without even the implied warranty of 17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 GNU General Public License, version 2.0, for more details. 19 20 You should have received a copy of the GNU General Public License 21 along with this program; if not, write to the Free Software 22 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 23 */ 24 25 #ifndef NDB_SCHEMA_OBJECT_H 26 #define NDB_SCHEMA_OBJECT_H 27 28 /* 29 Used for communication between the SQL thread performing 30 a schema operation and the schema disctribution thread. 31 32 The SQL thread creates one NDB_SCHEMA_OBJECT in the hash and 33 when the schema distribution thread has received new events it will 34 update the entry with slock info from the other nodes in the 35 cluster, finally the slock bitmap will empty and the SQL thread 36 knows that the schema operation has completed and will delete 37 the entry. 38 */ 39 40 41 #include <my_thread.h> // my_bitmap.h 42 #include <my_bitmap.h> 43 44 struct NDB_SCHEMA_OBJECT { 45 native_mutex_t mutex; 46 char *key; 47 size_t key_length; 48 uint use_count; 49 MY_BITMAP slock_bitmap; 50 uint32 slock[256/32]; // 256 bits for lock status of table 51 uint32 table_id; 52 uint32 table_version; 53 }; 54 55 NDB_SCHEMA_OBJECT *ndb_get_schema_object(const char *key, 56 bool create_if_not_exists); 57 58 void ndb_free_schema_object(NDB_SCHEMA_OBJECT **ndb_schema_object); 59 60 #endif 61