226
#define DECLARE_DRIZZLE_SYSVAR_BASIC(name, type) struct { \
227
DRIZZLE_PLUGIN_VAR_HEADER; \
223
#define DECLARE_MYSQL_SYSVAR_BASIC(name, type) struct { \
224
MYSQL_PLUGIN_VAR_HEADER; \
229
226
const type def_val; \
230
} DRIZZLE_SYSVAR_NAME(name)
227
} MYSQL_SYSVAR_NAME(name)
232
#define DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, type) struct { \
233
DRIZZLE_PLUGIN_VAR_HEADER; \
229
#define DECLARE_MYSQL_SYSVAR_SIMPLE(name, type) struct { \
230
MYSQL_PLUGIN_VAR_HEADER; \
234
231
type *value; type def_val; \
235
232
type min_val; type max_val; \
237
} DRIZZLE_SYSVAR_NAME(name)
234
} MYSQL_SYSVAR_NAME(name)
239
#define DECLARE_DRIZZLE_SYSVAR_TYPELIB(name, type) struct { \
240
DRIZZLE_PLUGIN_VAR_HEADER; \
236
#define DECLARE_MYSQL_SYSVAR_TYPELIB(name, type) struct { \
237
MYSQL_PLUGIN_VAR_HEADER; \
241
238
type *value; type def_val; \
242
239
TYPELIB *typelib; \
243
} DRIZZLE_SYSVAR_NAME(name)
240
} MYSQL_SYSVAR_NAME(name)
245
242
#define DECLARE_THDVAR_FUNC(type) \
246
type *(*resolve)(DRIZZLE_THD thd, int offset)
243
type *(*resolve)(MYSQL_THD thd, int offset)
248
#define DECLARE_DRIZZLE_THDVAR_BASIC(name, type) struct { \
249
DRIZZLE_PLUGIN_VAR_HEADER; \
245
#define DECLARE_MYSQL_THDVAR_BASIC(name, type) struct { \
246
MYSQL_PLUGIN_VAR_HEADER; \
251
248
const type def_val; \
252
249
DECLARE_THDVAR_FUNC(type); \
253
} DRIZZLE_SYSVAR_NAME(name)
250
} MYSQL_SYSVAR_NAME(name)
255
#define DECLARE_DRIZZLE_THDVAR_SIMPLE(name, type) struct { \
256
DRIZZLE_PLUGIN_VAR_HEADER; \
252
#define DECLARE_MYSQL_THDVAR_SIMPLE(name, type) struct { \
253
MYSQL_PLUGIN_VAR_HEADER; \
258
255
type def_val; type min_val; \
259
256
type max_val; type blk_sz; \
260
257
DECLARE_THDVAR_FUNC(type); \
261
} DRIZZLE_SYSVAR_NAME(name)
258
} MYSQL_SYSVAR_NAME(name)
263
#define DECLARE_DRIZZLE_THDVAR_TYPELIB(name, type) struct { \
264
DRIZZLE_PLUGIN_VAR_HEADER; \
260
#define DECLARE_MYSQL_THDVAR_TYPELIB(name, type) struct { \
261
MYSQL_PLUGIN_VAR_HEADER; \
267
264
DECLARE_THDVAR_FUNC(type); \
268
265
TYPELIB *typelib; \
269
} DRIZZLE_SYSVAR_NAME(name)
266
} MYSQL_SYSVAR_NAME(name)
273
270
the following declarations are for use by plugin implementors
276
#define DRIZZLE_SYSVAR_BOOL(name, varname, opt, comment, check, update, def) \
277
DECLARE_DRIZZLE_SYSVAR_BASIC(name, bool) = { \
273
#define MYSQL_SYSVAR_BOOL(name, varname, opt, comment, check, update, def) \
274
DECLARE_MYSQL_SYSVAR_BASIC(name, char) = { \
278
275
PLUGIN_VAR_BOOL | ((opt) & PLUGIN_VAR_MASK), \
279
276
#name, comment, check, update, &varname, def}
281
#define DRIZZLE_SYSVAR_STR(name, varname, opt, comment, check, update, def) \
282
DECLARE_DRIZZLE_SYSVAR_BASIC(name, char *) = { \
278
#define MYSQL_SYSVAR_STR(name, varname, opt, comment, check, update, def) \
279
DECLARE_MYSQL_SYSVAR_BASIC(name, char *) = { \
283
280
PLUGIN_VAR_STR | ((opt) & PLUGIN_VAR_MASK), \
284
281
#name, comment, check, update, &varname, def}
286
#define DRIZZLE_SYSVAR_INT(name, varname, opt, comment, check, update, def, min, max, blk) \
287
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, int) = { \
283
#define MYSQL_SYSVAR_INT(name, varname, opt, comment, check, update, def, min, max, blk) \
284
DECLARE_MYSQL_SYSVAR_SIMPLE(name, int) = { \
288
285
PLUGIN_VAR_INT | ((opt) & PLUGIN_VAR_MASK), \
289
286
#name, comment, check, update, &varname, def, min, max, blk }
291
#define DRIZZLE_SYSVAR_UINT(name, varname, opt, comment, check, update, def, min, max, blk) \
292
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, unsigned int) = { \
288
#define MYSQL_SYSVAR_UINT(name, varname, opt, comment, check, update, def, min, max, blk) \
289
DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned int) = { \
293
290
PLUGIN_VAR_INT | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
294
291
#name, comment, check, update, &varname, def, min, max, blk }
296
#define DRIZZLE_SYSVAR_LONG(name, varname, opt, comment, check, update, def, min, max, blk) \
297
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, long) = { \
293
#define MYSQL_SYSVAR_LONG(name, varname, opt, comment, check, update, def, min, max, blk) \
294
DECLARE_MYSQL_SYSVAR_SIMPLE(name, long) = { \
298
295
PLUGIN_VAR_LONG | ((opt) & PLUGIN_VAR_MASK), \
299
296
#name, comment, check, update, &varname, def, min, max, blk }
301
#define DRIZZLE_SYSVAR_ULONG(name, varname, opt, comment, check, update, def, min, max, blk) \
302
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, unsigned long) = { \
298
#define MYSQL_SYSVAR_ULONG(name, varname, opt, comment, check, update, def, min, max, blk) \
299
DECLARE_MYSQL_SYSVAR_SIMPLE(name, unsigned long) = { \
303
300
PLUGIN_VAR_LONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
304
301
#name, comment, check, update, &varname, def, min, max, blk }
306
#define DRIZZLE_SYSVAR_LONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
307
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, int64_t) = { \
303
#define MYSQL_SYSVAR_LONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
304
DECLARE_MYSQL_SYSVAR_SIMPLE(name, int64_t) = { \
308
305
PLUGIN_VAR_LONGLONG | ((opt) & PLUGIN_VAR_MASK), \
309
306
#name, comment, check, update, &varname, def, min, max, blk }
311
#define DRIZZLE_SYSVAR_ULONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
312
DECLARE_DRIZZLE_SYSVAR_SIMPLE(name, uint64_t) = { \
308
#define MYSQL_SYSVAR_ULONGLONG(name, varname, opt, comment, check, update, def, min, max, blk) \
309
DECLARE_MYSQL_SYSVAR_SIMPLE(name, uint64_t) = { \
313
310
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
314
311
#name, comment, check, update, &varname, def, min, max, blk }
316
#define DRIZZLE_SYSVAR_ENUM(name, varname, opt, comment, check, update, def, typelib) \
317
DECLARE_DRIZZLE_SYSVAR_TYPELIB(name, unsigned long) = { \
313
#define MYSQL_SYSVAR_ENUM(name, varname, opt, comment, check, update, def, typelib) \
314
DECLARE_MYSQL_SYSVAR_TYPELIB(name, unsigned long) = { \
318
315
PLUGIN_VAR_ENUM | ((opt) & PLUGIN_VAR_MASK), \
319
316
#name, comment, check, update, &varname, def, typelib }
321
#define DRIZZLE_SYSVAR_SET(name, varname, opt, comment, check, update, def, typelib) \
322
DECLARE_DRIZZLE_SYSVAR_TYPELIB(name, uint64_t) = { \
318
#define MYSQL_SYSVAR_SET(name, varname, opt, comment, check, update, def, typelib) \
319
DECLARE_MYSQL_SYSVAR_TYPELIB(name, uint64_t) = { \
323
320
PLUGIN_VAR_SET | ((opt) & PLUGIN_VAR_MASK), \
324
321
#name, comment, check, update, &varname, def, typelib }
326
#define DRIZZLE_THDVAR_BOOL(name, opt, comment, check, update, def) \
327
DECLARE_DRIZZLE_THDVAR_BASIC(name, char) = { \
323
#define MYSQL_THDVAR_BOOL(name, opt, comment, check, update, def) \
324
DECLARE_MYSQL_THDVAR_BASIC(name, char) = { \
328
325
PLUGIN_VAR_BOOL | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
329
326
#name, comment, check, update, -1, def, NULL}
331
#define DRIZZLE_THDVAR_STR(name, opt, comment, check, update, def) \
332
DECLARE_DRIZZLE_THDVAR_BASIC(name, char *) = { \
328
#define MYSQL_THDVAR_STR(name, opt, comment, check, update, def) \
329
DECLARE_MYSQL_THDVAR_BASIC(name, char *) = { \
333
330
PLUGIN_VAR_STR | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
334
331
#name, comment, check, update, -1, def, NULL}
336
#define DRIZZLE_THDVAR_INT(name, opt, comment, check, update, def, min, max, blk) \
337
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, int) = { \
333
#define MYSQL_THDVAR_INT(name, opt, comment, check, update, def, min, max, blk) \
334
DECLARE_MYSQL_THDVAR_SIMPLE(name, int) = { \
338
335
PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
339
336
#name, comment, check, update, -1, def, min, max, blk, NULL }
341
#define DRIZZLE_THDVAR_UINT(name, opt, comment, check, update, def, min, max, blk) \
342
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, unsigned int) = { \
338
#define MYSQL_THDVAR_UINT(name, opt, comment, check, update, def, min, max, blk) \
339
DECLARE_MYSQL_THDVAR_SIMPLE(name, unsigned int) = { \
343
340
PLUGIN_VAR_INT | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
344
341
#name, comment, check, update, -1, def, min, max, blk, NULL }
346
#define DRIZZLE_THDVAR_LONG(name, opt, comment, check, update, def, min, max, blk) \
347
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, long) = { \
343
#define MYSQL_THDVAR_LONG(name, opt, comment, check, update, def, min, max, blk) \
344
DECLARE_MYSQL_THDVAR_SIMPLE(name, long) = { \
348
345
PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
349
346
#name, comment, check, update, -1, def, min, max, blk, NULL }
351
#define DRIZZLE_THDVAR_ULONG(name, opt, comment, check, update, def, min, max, blk) \
352
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, unsigned long) = { \
348
#define MYSQL_THDVAR_ULONG(name, opt, comment, check, update, def, min, max, blk) \
349
DECLARE_MYSQL_THDVAR_SIMPLE(name, unsigned long) = { \
353
350
PLUGIN_VAR_LONG | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
354
351
#name, comment, check, update, -1, def, min, max, blk, NULL }
356
#define DRIZZLE_THDVAR_LONGLONG(name, opt, comment, check, update, def, min, max, blk) \
357
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, int64_t) = { \
353
#define MYSQL_THDVAR_LONGLONG(name, opt, comment, check, update, def, min, max, blk) \
354
DECLARE_MYSQL_THDVAR_SIMPLE(name, int64_t) = { \
358
355
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
359
356
#name, comment, check, update, -1, def, min, max, blk, NULL }
361
#define DRIZZLE_THDVAR_ULONGLONG(name, opt, comment, check, update, def, min, max, blk) \
362
DECLARE_DRIZZLE_THDVAR_SIMPLE(name, uint64_t) = { \
358
#define MYSQL_THDVAR_ULONGLONG(name, opt, comment, check, update, def, min, max, blk) \
359
DECLARE_MYSQL_THDVAR_SIMPLE(name, uint64_t) = { \
363
360
PLUGIN_VAR_LONGLONG | PLUGIN_VAR_THDLOCAL | PLUGIN_VAR_UNSIGNED | ((opt) & PLUGIN_VAR_MASK), \
364
361
#name, comment, check, update, -1, def, min, max, blk, NULL }
366
#define DRIZZLE_THDVAR_ENUM(name, opt, comment, check, update, def, typelib) \
367
DECLARE_DRIZZLE_THDVAR_TYPELIB(name, unsigned long) = { \
363
#define MYSQL_THDVAR_ENUM(name, opt, comment, check, update, def, typelib) \
364
DECLARE_MYSQL_THDVAR_TYPELIB(name, unsigned long) = { \
368
365
PLUGIN_VAR_ENUM | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
369
366
#name, comment, check, update, -1, def, NULL, typelib }
371
#define DRIZZLE_THDVAR_SET(name, opt, comment, check, update, def, typelib) \
372
DECLARE_DRIZZLE_THDVAR_TYPELIB(name, uint64_t) = { \
368
#define MYSQL_THDVAR_SET(name, opt, comment, check, update, def, typelib) \
369
DECLARE_MYSQL_THDVAR_TYPELIB(name, uint64_t) = { \
373
370
PLUGIN_VAR_SET | PLUGIN_VAR_THDLOCAL | ((opt) & PLUGIN_VAR_MASK), \
374
371
#name, comment, check, update, -1, def, NULL, typelib }
376
373
/* accessor macros */
378
375
#define SYSVAR(name) \
379
(*(DRIZZLE_SYSVAR_NAME(name).value))
376
(*(MYSQL_SYSVAR_NAME(name).value))
381
378
/* when thd == null, result points to global value */
382
379
#define THDVAR(thd, name) \
383
(*(DRIZZLE_SYSVAR_NAME(name).resolve(thd, DRIZZLE_SYSVAR_NAME(name).offset)))
380
(*(MYSQL_SYSVAR_NAME(name).resolve(thd, MYSQL_SYSVAR_NAME(name).offset)))