mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 03:21:53 +01:00
d847ac54ca
post-review change - use pointer instead of copy on the stack. WL#1034 (Internal CRON) This patch adds INFORMATION_SCHEMA.EVENTS table with the following format: EVENT_CATALOG - MYSQL_TYPE_STRING (Always NULL) EVENT_SCHEMA - MYSQL_TYPE_STRING (the database) EVENT_NAME - MYSQL_TYPE_STRING (the name) DEFINER - MYSQL_TYPE_STRING (user@host) EVENT_BODY - MYSQL_TYPE_STRING (the body from mysql.event) EVENT_TYPE - MYSQL_TYPE_STRING ("ONE TIME" | "RECURRING") EXECUTE_AT - MYSQL_TYPE_TIMESTAMP (set for "ONE TIME" otherwise NULL) INTERVAL_VALUE - MYSQL_TYPE_LONG (set for RECURRING otherwise NULL) INTERVAL_FIELD - MYSQL_TYPE_STRING (set for RECURRING otherwise NULL) SQL_MODE - MYSQL_TYPE_STRING (for now NULL) STARTS - MYSQL_TYPE_TIMESTAMP (starts from mysql.event) ENDS - MYSQL_TYPE_TIMESTAMP (ends from mysql.event) STATUS - MYSQL_TYPE_STRING (ENABLED | DISABLED) ON_COMPLETION - MYSQL_TYPE_STRING (NOT PRESERVE | PRESERVE) CREATED - MYSQL_TYPE_TIMESTAMP LAST_ALTERED - MYSQL_TYPE_TIMESTAMP LAST_EXECUTED - MYSQL_TYPE_TIMESTAMP EVENT_COMMENT - MYSQL_TYPE_STRING SQL_MODE is NULL for now, because the value is still not stored in mysql.event . Support will be added as a fix for another bug. This patch also adds SHOW [FULL] EVENTS [FROM db] [LIKE pattern] 1. SHOW EVENTS shows always only the events on the same user, because the PK of mysql.event is (definer, db, name) several users may have event with the same name -> no information disclosure. 2. SHOW FULL EVENTS - shows the events (in the current db as SHOW EVENTS) of all users. The user has to have PROCESS privilege, if not then SHOW FULL EVENTS behave like SHOW EVENTS. 3. If [FROM db] is specified then this db is considered. 4. Event names can be filtered with LIKE pattern. SHOW EVENTS returns table with the following columns, which are subset of the data which is returned by SELECT * FROM I_S.EVENTS Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
74 lines
2.3 KiB
C
74 lines
2.3 KiB
C
/* Copyright (C) 2004-2005 MySQL 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 */
|
|
|
|
#ifndef _EVENT_PRIV_H_
|
|
#define _EVENT_PRIV_H_
|
|
#include "mysql_priv.h"
|
|
|
|
|
|
#define EVEX_USE_QUEUE
|
|
|
|
#define UNLOCK_MUTEX_AND_BAIL_OUT(__mutex, __label) \
|
|
{ VOID(pthread_mutex_unlock(&__mutex)); goto __label; }
|
|
|
|
#define EVEX_DB_FIELD_LEN 64
|
|
#define EVEX_NAME_FIELD_LEN 64
|
|
|
|
int
|
|
my_time_compare(TIME *a, TIME *b);
|
|
|
|
int
|
|
evex_db_find_event_aux(THD *thd, const LEX_STRING dbname,
|
|
const LEX_STRING rname,
|
|
const LEX_STRING definer,
|
|
TABLE *table);
|
|
|
|
int
|
|
event_timed_compare_q(void *vptr, byte* a, byte *b);
|
|
|
|
|
|
#define EXEC_QUEUE_QUEUE_NAME executing_queue
|
|
#define EXEC_QUEUE_DARR_NAME evex_executing_queue
|
|
|
|
|
|
#define EVEX_QUEUE_TYPE QUEUE
|
|
#define EVEX_PTOQEL byte *
|
|
|
|
#define EVEX_EQ_NAME executing_queue
|
|
#define evex_queue_first_element(queue, __cast) ((__cast)queue_top(queue))
|
|
#define evex_queue_element(queue, idx, __cast) ((__cast)queue_element(queue, idx))
|
|
#define evex_queue_delete_element(queue, idx) queue_remove(queue, idx)
|
|
#define evex_queue_destroy(queue) delete_queue(queue)
|
|
#define evex_queue_first_updated(queue) queue_replaced(queue)
|
|
#define evex_queue_insert(queue, element) queue_insert_safe(queue, element);
|
|
|
|
|
|
|
|
void
|
|
evex_queue_init(EVEX_QUEUE_TYPE *queue);
|
|
|
|
#define evex_queue_num_elements(queue) queue.elements
|
|
|
|
|
|
extern bool evex_is_running;
|
|
extern MEM_ROOT evex_mem_root;
|
|
extern pthread_mutex_t LOCK_event_arrays,
|
|
LOCK_workers_count,
|
|
LOCK_evex_running;
|
|
extern ulonglong evex_main_thread_id;
|
|
extern QUEUE EVEX_EQ_NAME;
|
|
|
|
#endif /* _EVENT_PRIV_H_ */
|