File: eqlcomp.h

package info (click to toggle)
virtuoso-opensource 6.1.6+dfsg2-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid, stretch
  • size: 260,992 kB
  • ctags: 125,220
  • sloc: ansic: 652,748; sql: 458,419; xml: 282,834; java: 61,031; sh: 40,031; cpp: 36,890; cs: 25,240; php: 12,692; yacc: 9,523; lex: 7,018; makefile: 6,157; jsp: 4,484; awk: 1,643; perl: 1,013; ruby: 1,003; python: 326
file content (201 lines) | stat: -rw-r--r-- 7,334 bytes parent folder | download | duplicates (2)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
/*
 *  eqlcomp.h
 *
 *  $Id$
 *
 *  This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
 *  project.
 *
 *  Copyright (C) 1998-2012 OpenLink Software
 *
 *  This project 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; only version 2 of the License, dated June 1991.
 *
 *  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
 *
 */

#ifndef _EQLCOMP_H
#define _EQLCOMP_H

#include "sqlcomp.h"
#include "sqlnode.h"

void eql_stmt_comp (comp_context_t * cc, caddr_t stmt, data_source_t ** head,
    data_source_t ** tail);

query_t *eql_compile_2 (const char *string, client_connection_t * cli, caddr_t * err,
	       int mode);
/* mode for sql_compile - other values are SQL_CURSOR_<xx> */
#define SQLC_DEFAULT _SQL_CURSOR_FORWARD_ONLY
#define SQLC_DO_NOT_STORE_PROC -1
#define SQLC_PARSE_ONLY 	-2
#define SQLC_NO_REMOTE -3
#define SQLC_TRY_SQLO -4
#define SQLC_SQLO_VERBOSE -5
#define SQLC_UNIQUE_ROWS -6
#define SQLC_SQLO_SCORE -7
#define SQLC_QR_TEXT_IS_CONSTANT -8
#define SQLC_IS_RECOMPILE  0x100
#define SQLC_PARSE_ONLY_REC 	-9
#define SQLC_STATIC_PRESERVES_TREE 	-10

query_t *eql_compile (const char *string, client_connection_t * cli);

caddr_t box_keyword_get (caddr_t * box, char *kwd, int *);

stmt_compilation_t *qr_describe (query_t * qr, caddr_t *err_ret);
stmt_compilation_t *qr_describe_1 (query_t * qr, caddr_t *err_ret, client_connection_t * cli);

caddr_t str_to_sym (const char *str);

void ts_free (table_source_t * ts);

void sel_free (select_node_t * sel);

state_slot_t * ssl_copy (comp_context_t * cc, state_slot_t * org);

state_slot_t *ssl_new_variable (comp_context_t * cc, const char *name, dtp_t dtp);

state_slot_t *ssl_new_parameter (comp_context_t * cc, const char *name);

state_slot_t *ssl_new_column (comp_context_t * cc, const char *cr_name,
    dbe_column_t * col);

state_slot_t *ssl_new_inst_variable (comp_context_t * cc, const char *name,
    dtp_t dtp);
state_slot_t * ssl_new_tree (comp_context_t * cc, const char *name);

extern state_slot_t *ssl_new_constant (comp_context_t * cc, caddr_t val);
extern state_slot_t *ssl_new_big_constant (comp_context_t * cc, caddr_t val);

state_slot_t *ssl_new_placeholder (comp_context_t * cc, const char *name);

state_slot_t *ssl_new_itc (comp_context_t * cc);

int cc_new_instance_slot (comp_context_t * cc);

void ins_free (insert_node_t * ins);

void upd_free (update_node_t * upd);

void ddl_free (ddl_node_t * ddl);

void sqlc_error (comp_context_t * cc, const char *st, const char *str,...);
void sqlc_new_error (comp_context_t * cc, const char *st, const char *virt_code, const char *str,...);
void sqlc_resignal_1 (comp_context_t * cc, caddr_t err);

extern query_t *DBG_NAME (sql_compile) (DBG_PARAMS const char *string2, client_connection_t * cli, caddr_t * err,
    volatile int store_procs);
extern query_t *DBG_NAME (sql_proc_to_recompile) (DBG_PARAMS const char *string2, client_connection_t * cli, caddr_t proc_name,
    int text_is_constant);
#ifdef MALLOC_DEBUG
#define sql_compile(s,c,e,sp) dbg_sql_compile(__FILE__,__LINE__,(s),(c),(e),(sp))
#define sql_proc_to_recompile(s,c,pn,tic) dbg_sql_proc_to_recompile(__FILE__,__LINE__,(s),(c),(pn),(tic))
#endif

#if defined (MALLOC_DEBUG) || defined (VALGRIND)
extern query_t *static_qr_dllist; /*!< Double-linked list of queries that should be freed only at server shutdown. */
extern query_t *dbg_sql_compile_static (const char *file, int line,
    const char *string2, client_connection_t * cli, caddr_t * err,
    volatile int store_procs);
#define sql_compile_static(s,c,e,sp) dbg_sql_compile_static(__FILE__,__LINE__,(s),(c),(e),(sp))
extern void static_qr_dllist_append (query_t *qr, int gpf_on_dupe);
extern void static_qr_dllist_remove (query_t *qr);
#else
extern query_t *sql_compile_static (const char *string2, client_connection_t * cli, caddr_t * err,
    volatile int store_procs);
#define static_qr_dllist_append(qr,g)
#define static_qr_dllist_remove(qr)
#endif
extern void sql_compile_many (int count, int compile_static, ...);

void sqlc_set_client (client_connection_t * cli);


#define TA_SQLC_ERROR 111
#define TA_SQLC_CURRENT_CLIENT 113
#define TA_SQL_WARNING_SET 115
#define TA_TARGET_RDS 116

void ks_spec_add (search_spec_t ** place, search_spec_t * sp);

void data_source_init (data_source_t * src, comp_context_t * cc, int type);

void ks_add_key_cols (comp_context_t * cc, key_source_t * ks, dbe_key_t * key,
    char *cr_name);

void ks_make_main_spec (comp_context_t * cc, key_source_t * ks, char *cr_name);

void query_free (query_t * query);


#define IS_TS_NODE(ts)  \
 ((qn_input_fn) table_source_input ==  ts->src_gen.src_input || \
  (qn_input_fn) table_source_input_unique == ts->src_gen.src_input)

void sqlc_ts_set_no_blobs (table_source_t * ts);

void ts_alias_current_of (table_source_t * ts);

void qr_add_current_of_output (query_t * qr);

void qr_resolve_aliases (query_t * qr);

int ssl_is_settable (state_slot_t * ssl);

typedef struct dependence_def_s
{
  id_hash_t *ddef_name_to_qr;
  dk_mutex_t *ddef_mtx;
} dependence_def_t;

typedef dk_set_t dependent_t;

dependence_def_t *dependence_def_new (int sz);
void qr_uses_object (query_t *qr, const char *object, dependent_t *dep, dependence_def_t *dependence);
void object_mark_affected (const char *object, dependence_def_t *dependence, int force_text_reparsing);
void qr_drop_obj_dependencies (query_t *qr, dependent_t *dep, dependence_def_t *ddef);

void qr_uses_table (query_t * qr, const char *tb);

void tb_mark_affected (const char *tb);
void udt_mark_affected (const char *tb);
extern void jso_mark_affected (const char *jso_inst);
int udt_is_qr_used (char *name);
void qr_uses_type (query_t * qr, const char *udt);
void qr_uses_jso (query_t * qr, const char *jso_iri);
void qc_free (struct query_cursor_s * qc);

search_spec_t ** ks_col_specs (key_source_t * ks, dbe_column_t * col,
	      int rm_from_row_specs);

void qr_garbage (query_t * qr, caddr_t garbage);

void sqlc_ins_keys (comp_context_t * cc, insert_node_t * ins);
void table_source_om (comp_context_t * cc, table_source_t * ts);
void qr_set_freeable (comp_context_t * cc, query_t * qr);

query_t *sqlc_make_policy_trig (comp_context_t *cc, dbe_table_t *tb, int op);

state_slot_t * ssl_with_info (comp_context_t * cc, state_slot_t * ssl);
state_slot_t * ssl_use_stock  (comp_context_t * cc, state_slot_t * ssl);
void stssl_ins (comp_context_t * cc, instruction_t * ins);
void stssl_query (comp_context_t * cc, query_t * qr);
void stssl_cv (comp_context_t * cc, instruction_t * cv);
void  il_init (comp_context_t * cc, inx_locality_t * il);
void key_source_om (comp_context_t * cc, key_source_t * ks);
void clb_free (cl_buffer_t * clb);
void dsr_free (data_source_t * x);
void qn_free (data_source_t * qn);
void cl_order_free (clo_comp_t ** ord);

#endif /* __EQLCOMP_H_010520 */