forked from Meituan-Dianping/SQLAdvisor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdelayable_insert_operation.h
executable file
·57 lines (47 loc) · 1.84 KB
/
delayable_insert_operation.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef DELAYABLE_INSERT_OPERATION_H
#define DELAYABLE_INSERT_OPERATION_H
/*
Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
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; version 2 of the License.
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "sql_class.h"
/**
An insert operation that can be delayed.
*/
class Delayable_insert_operation : public COPY_INFO
{
public:
/*
This is an INSERT, and as function defaults have been set by the client
thread already, they needn't be set again:
*/
Delayable_insert_operation() :
COPY_INFO(COPY_INFO::INSERT_OPERATION,
NULL, // inserted_columns
false, // manage_defaults
DUP_ERROR, // duplicate_handling
false) // ignore_errors
{}
/**
This is a backdoor interface for supporting legacy code for delayed
inserts. The delayed insert handler abuses COPY_INFO by having a shared
instance for all delayed insert operations, and keeping a copy of the
state that is local to the current insert operation inside each delayed
row. Then these two members must be altered before writing each record.
*/
void set_dup_and_ignore(enum enum_duplicates d, bool i)
{
handle_duplicates= d;
ignore= i;
}
};
#endif // DELAYABLE_INSERT_OPERATION_H