CUBRID Engine
latest
Main Page
Namespaces
Classes
Files
File List
File Members
view_transform.h
Go to the documentation of this file.
1
/*
2
* Copyright 2008 Search Solution Corporation
3
* Copyright 2016 CUBRID Corporation
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*/
18
19
20
/*
21
* view_transform.h - view (virtual class) transformation
22
*/
23
24
#ifndef _VIEW_TRANSFORM_H_
25
#define _VIEW_TRANSFORM_H_
26
27
#ident "$Id$"
28
29
#include "
parser.h
"
30
#include "
schema_manager.h
"
31
32
typedef
enum
PT_FETCH_AS
33
{
PT_NORMAL_SELECT
,
PT_INVERTED_ASSIGNMENTS
,
PT_PARTIAL_SELECT
}
34
PT_FETCH_AS
;
35
36
enum
pt_updatability
37
{
38
PT_NOT_UPDATABLE
= 0x0,
/* non-updatable query */
39
PT_PARTIALLY_UPDATABLE
= 0x1,
/* partially updatable query (i.e. vclass whose definition contains joins, but is
40
* otherwise updatable) */
41
PT_UPDATABLE
= 0x3
/* fully updatable query */
42
};
43
typedef
enum
pt_updatability
PT_UPDATABILITY
;
44
45
extern
PT_NODE
*
mq_bump_correlation_level
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* node,
int
increment,
int
match);
46
47
extern
PT_UPDATABILITY
mq_updatable
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement);
48
49
extern
PT_NODE
*
mq_translate
(
PARSER_CONTEXT
*
parser
,
PT_NODE
*
volatile
node);
50
51
extern
PT_NODE
*
mq_make_derived_spec
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* node,
PT_NODE
* subquery,
int
*idx,
52
PT_NODE
** spec_ptr,
PT_NODE
** attr_list_ptr);
53
extern
PT_NODE
*
mq_oid
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* spec);
54
55
extern
PT_NODE
*
mq_get_references
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement,
PT_NODE
* spec);
56
extern
PT_NODE
*
mq_get_references_helper
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement,
PT_NODE
* spec,
57
bool
get_spec_referenced_attr);
58
extern
PT_NODE
*
mq_reset_paths
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement,
PT_NODE
* root_spec);
59
extern
PT_NODE
*
mq_reset_ids
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement,
PT_NODE
* spec);
60
extern
PT_NODE
*
mq_clear_ids
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* node,
PT_NODE
* spec);
61
62
extern
PT_NODE
*
mq_set_references
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement,
PT_NODE
* spec);
63
64
extern
bool
mq_is_outer_join_spec
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* spec);
65
66
extern
bool
mq_is_updatable
(
DB_OBJECT
* vclass_object);
67
extern
bool
mq_is_updatable_strict
(
DB_OBJECT
* vclass_object);
68
69
extern
bool
mq_is_updatable_attribute
(
DB_OBJECT
* vclass,
const
char
*attr_name,
DB_OBJECT
* base_class);
70
71
extern
bool
mq_is_updatable_att
(
PARSER_CONTEXT
*
parser
,
DB_OBJECT
* vmop,
const
char
*attr_name,
DB_OBJECT
* rmop);
72
73
extern
int
mq_get_attribute
(
DB_OBJECT
* vclass,
const
char
*attr_name,
DB_OBJECT
* base_class,
74
DB_VALUE
* virtual_value,
DB_OBJECT
* base_instance);
75
76
extern
int
mq_update_attribute
(
DB_OBJECT
* vclass,
const
char
*attr_name,
DB_OBJECT
* base_class,
77
DB_VALUE
* virtual_value,
DB_VALUE
* base_value,
const
char
**base_name,
int
db_auth);
78
79
extern
DB_OBJECT
*
mq_fetch_one_real_class
(
DB_OBJECT
* vclass);
80
81
82
extern
int
mq_evaluate_expression
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* expr,
DB_VALUE
* value,
DB_OBJECT
*
object
,
83
UINTPTR spec_id);
84
85
extern
int
mq_evaluate_expression_having_serial
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* expr,
DB_VALUE
* values,
86
int
values_count,
DB_OBJECT
*
object
, UINTPTR spec_id);
87
88
extern
int
mq_evaluate_check_option
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* expr,
DB_OBJECT
*
object
,
PT_NODE
* view_class);
89
90
extern
int
mq_get_expression
(
DB_OBJECT
*
object
,
const
char
*expr,
DB_VALUE
* value);
91
92
extern
PT_NODE
*
mq_reset_ids_in_statement
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement);
93
94
extern
PT_NODE
*
mq_reset_ids_in_methods
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* statement);
95
96
extern
PT_NODE
*
mq_rewrite_aggregate_as_derived
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* agg_sel);
97
98
extern
PT_NODE
*
mq_rewrite_query_as_derived
(
PARSER_CONTEXT
*
parser
,
PT_NODE
* query);
99
#endif
/* _VIEW_TRANSFORM_H_ */
mq_make_derived_spec
PT_NODE * mq_make_derived_spec(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *subquery, int *idx, PT_NODE **spec_ptr, PT_NODE **attr_list_ptr)
Definition:
view_transform.c:8243
mq_is_outer_join_spec
bool mq_is_outer_join_spec(PARSER_CONTEXT *parser, PT_NODE *spec)
Definition:
view_transform.c:387
schema_manager.h
mq_update_attribute
int mq_update_attribute(DB_OBJECT *vclass, const char *attr_name, DB_OBJECT *base_class, DB_VALUE *virtual_value, DB_VALUE *base_value, const char **base_name, int db_auth)
Definition:
view_transform.c:10546
mq_get_references
PT_NODE * mq_get_references(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *spec)
Definition:
view_transform.c:7165
db_object
Definition:
work_space.h:118
mq_set_references
PT_NODE * mq_set_references(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *spec)
Definition:
view_transform.c:7347
mq_evaluate_expression
int mq_evaluate_expression(PARSER_CONTEXT *parser, PT_NODE *expr, DB_VALUE *value, DB_OBJECT *object, UINTPTR spec_id)
Definition:
view_transform.c:10341
mq_is_updatable
bool mq_is_updatable(DB_OBJECT *vclass_object)
Definition:
view_transform.c:10259
mq_oid
PT_NODE * mq_oid(PARSER_CONTEXT *parser, PT_NODE *spec)
Definition:
view_transform.c:10497
PT_PARTIALLY_UPDATABLE
Definition:
view_transform.h:39
PT_NORMAL_SELECT
Definition:
view_transform.h:33
PT_UPDATABLE
Definition:
view_transform.h:41
mq_reset_ids
PT_NODE * mq_reset_ids(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *spec)
Definition:
view_transform.c:6795
db_value
Definition:
dbtype_def.h:1080
parser.h
parser_node
Definition:
parse_tree.h:3437
mq_get_attribute
int mq_get_attribute(DB_OBJECT *vclass, const char *attr_name, DB_OBJECT *base_class, DB_VALUE *virtual_value, DB_OBJECT *base_instance)
Definition:
view_transform.c:10433
mq_updatable
PT_UPDATABILITY mq_updatable(PARSER_CONTEXT *parser, PT_NODE *statement)
Definition:
view_transform.c:1184
mq_is_updatable_strict
bool mq_is_updatable_strict(DB_OBJECT *vclass_object)
Definition:
view_transform.c:10270
mq_rewrite_aggregate_as_derived
PT_NODE * mq_rewrite_aggregate_as_derived(PARSER_CONTEXT *parser, PT_NODE *agg_sel)
Definition:
view_transform.c:3664
mq_is_updatable_attribute
bool mq_is_updatable_attribute(DB_OBJECT *vclass, const char *attr_name, DB_OBJECT *base_class)
Definition:
view_transform.c:10314
mq_evaluate_check_option
int mq_evaluate_check_option(PARSER_CONTEXT *parser, PT_NODE *expr, DB_OBJECT *object, PT_NODE *view_class)
Definition:
view_transform.c:10946
mq_get_expression
int mq_get_expression(DB_OBJECT *object, const char *expr, DB_VALUE *value)
Definition:
view_transform.c:10710
parser_context
Definition:
parse_tree.h:3530
parser
SP_PARSER_CTX * parser
Definition:
shard_proxy_handler.c:52
mq_reset_paths
PT_NODE * mq_reset_paths(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *root_spec)
Definition:
view_transform.c:7273
mq_fetch_one_real_class
DB_OBJECT * mq_fetch_one_real_class(DB_OBJECT *vclass)
Definition:
view_transform.c:10689
mq_rewrite_query_as_derived
PT_NODE * mq_rewrite_query_as_derived(PARSER_CONTEXT *parser, PT_NODE *query)
Definition:
view_transform.c:3516
mq_get_references_helper
PT_NODE * mq_get_references_helper(PARSER_CONTEXT *parser, PT_NODE *statement, PT_NODE *spec, bool get_spec_referenced_attr)
Definition:
view_transform.c:7179
PT_UPDATABILITY
enum pt_updatability PT_UPDATABILITY
Definition:
view_transform.h:43
mq_reset_ids_in_methods
PT_NODE * mq_reset_ids_in_methods(PARSER_CONTEXT *parser, PT_NODE *statement)
Definition:
view_transform.c:7040
mq_reset_ids_in_statement
PT_NODE * mq_reset_ids_in_statement(PARSER_CONTEXT *parser, PT_NODE *statement)
Definition:
view_transform.c:7023
mq_clear_ids
PT_NODE * mq_clear_ids(PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *spec)
Definition:
view_transform.c:6894
mq_bump_correlation_level
PT_NODE * mq_bump_correlation_level(PARSER_CONTEXT *parser, PT_NODE *node, int increment, int match)
Definition:
view_transform.c:518
mq_evaluate_expression_having_serial
int mq_evaluate_expression_having_serial(PARSER_CONTEXT *parser, PT_NODE *expr, DB_VALUE *values, int values_count, DB_OBJECT *object, UINTPTR spec_id)
Definition:
view_transform.c:10387
PT_NOT_UPDATABLE
Definition:
view_transform.h:38
pt_updatability
pt_updatability
Definition:
view_transform.h:36
PT_INVERTED_ASSIGNMENTS
Definition:
view_transform.h:33
PT_PARTIAL_SELECT
Definition:
view_transform.h:33
mq_translate
PT_NODE * mq_translate(PARSER_CONTEXT *parser, PT_NODE *volatile node)
Definition:
view_transform.c:6562
mq_is_updatable_att
bool mq_is_updatable_att(PARSER_CONTEXT *parser, DB_OBJECT *vmop, const char *attr_name, DB_OBJECT *rmop)
Definition:
view_transform.c:10284
PT_FETCH_AS
PT_FETCH_AS
Definition:
view_transform.h:32
src
parser
view_transform.h
Generated by
1.8.11