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
|
/*
Copyright (c) 2019, MariaDB
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_type_json.h"
#include "sql_class.h"
Type_handler_json_longtext type_handler_json_longtext;
/**
Create JSON_VALID(field_name) expression
*/
Virtual_column_info *
Type_handler_json_longtext::make_json_valid_expr(THD *thd,
const LEX_CSTRING *field_name)
const
{
Lex_ident_sys_st str;
Item *field, *expr;
str.set_valid_utf8(field_name);
if (unlikely(!(field= thd->lex->create_item_ident_field(thd,
Lex_ident_sys(),
Lex_ident_sys(),
str))))
return 0;
if (unlikely(!(expr= new (thd->mem_root) Item_func_json_valid(thd, field))))
return 0;
return add_virtual_expression(thd, expr);
}
bool Type_handler_json_longtext::
Column_definition_validate_check_constraint(THD *thd,
Column_definition * c) const
{
if (!c->check_constraint &&
!(c->check_constraint= make_json_valid_expr(thd, &c->field_name)))
return true;
return Type_handler::Column_definition_validate_check_constraint(thd, c);
}
|