CUBRID Engine  latest
shard_statement.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  * shard_statement.h -
22  *
23  */
24 
25 #ifndef _SHARD_STATEMENT_H_
26 #define _SHARD_STATEMENT_H_
27 
28 #ident "$Id$"
29 
30 #include "shard_parser.h"
31 #include "broker_config.h"
32 #include "shard_proxy_queue.h"
33 #include "cas_protocol.h"
34 
35 #define SHARD_STMT_INVALID_HANDLE_ID (-1)
36 #define SHARD_STMT_MAX_NUM_ALLOC (8192)
37 
38 enum
39 {
44 };
45 
46 enum
47 {
51 };
52 
53 typedef struct t_shard_stmt T_SHARD_STMT;
55 {
56  unsigned int index;
57  unsigned int num_alloc;
58 
59  int stmt_h_id; /* stmt handle id for client */
60  int status;
61  int stmt_type;
62 
63  T_BROKER_VERSION client_version; /* client version */
64 
65  int ctx_cid; /* owner context cid */
66  unsigned int ctx_uid; /* owner context uid */
68 
69  int num_pinned; /* pinned count */
74 
75  SP_PARSER_CTX *parser; /* parser context */
76 
78  void *request_buffer; /* prepare request */
80  void *reply_buffer; /* prepare reply */
81 
83 
85 };
86 
89 {
91 
94 
95  T_SHARD_STMT *lru; /* head */
96  T_SHARD_STMT *mru; /* tail */
97 
99 
101 };
102 
103 extern T_SHARD_STMT *shard_stmt_find_by_sql (char *sql_stmt, const char *db_user, T_BROKER_VERSION client_version);
105 extern int shard_stmt_pin (T_SHARD_STMT * stmt_p);
106 extern int shard_stmt_unpin (T_SHARD_STMT * stmt_p);
107 
108 extern void shard_stmt_check_waiter_and_wakeup (T_SHARD_STMT * stmt_p);
109 
110 extern T_SHARD_STMT *shard_stmt_new_prepared_stmt (char *sql_stmt, int ctx_cid, unsigned int ctx_uid,
112 extern T_SHARD_STMT *shard_stmt_new_schema_info (int ctx_cid, unsigned int ctx_uid);
113 extern T_SHARD_STMT *shard_stmt_new_exclusive (char *sql_stmt, int ctx_cid, unsigned int ctx_uid,
115 extern void shard_stmt_free (T_SHARD_STMT * stmt_p);
116 extern void shard_stmt_destroy (void);
117 extern int shard_stmt_find_srv_h_id_for_shard_cas (int stmt_h_id, int shard_id, int cas_id);
118 extern int shard_stmt_add_srv_h_id_for_shard_cas (int stmt_h_id, int shard_id, int cas_id, int srv_h_id);
119 extern void shard_stmt_del_srv_h_id_for_shard_cas (int stmt_h_id, int shard_id, int cas_id);
120 extern void shard_stmt_del_all_srv_h_id_for_shard_cas (int shard_id, int cas_id);
121 extern int shard_stmt_set_hint_list (T_SHARD_STMT * stmt_p);
122 extern int shard_stmt_get_hint_type (T_SHARD_STMT * stmt_p);
123 extern int shard_stmt_save_prepare_request (T_SHARD_STMT * stmt_p, bool has_shard_val_hint, char **prepare_req,
124  int *prepare_req_len, char *argv_sql_stmt, char *argv_remainder,
125  char *orgzd_sql);
126 #if defined (PROXY_VERBOSE_DEBUG)
127 extern void shard_stmt_dump_title (FILE * fp);
128 extern void shard_stmt_dump (FILE * fp, T_SHARD_STMT * stmt_p);
129 extern void shard_stmt_dump_all (FILE * fp);
130 #endif /* PROXY_VERBOSE_DEBUG */
131 extern char *shard_str_stmt (T_SHARD_STMT * stmt_p);
132 extern int shard_stmt_initialize (int initial_size);
133 extern char *shard_stmt_rewrite_sql (bool * has_shard_val_hint, char *sql_stmt, char appl_server);
134 
135 extern void shard_statement_wait_timer (void);
136 extern void shard_stmt_set_status_invalid (int stmt_h_id);
137 extern void shard_stmt_set_status_complete (int stmt_h_id);
138 #endif /* _SHARD_STATEMENT_H_ */
T_SHARD_STMT * lru_prev
T_SHARD_QUEUE waitq
int shard_stmt_initialize(int initial_size)
char database_user[SRV_CON_DBUSER_SIZE]
unsigned int num_alloc
int shard_stmt_add_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id, int srv_h_id)
unsigned int index
void shard_statement_wait_timer(void)
T_SHARD_STMT * lru
int request_buffer_length
void shard_stmt_set_status_complete(int stmt_h_id)
void * reply_buffer
void shard_stmt_free(T_SHARD_STMT *stmt_p)
T_BROKER_VERSION client_version
int shard_stmt_get_hint_type(T_SHARD_STMT *stmt_p)
int shard_stmt_save_prepare_request(T_SHARD_STMT *stmt_p, bool has_shard_val_hint, char **prepare_req, int *prepare_req_len, char *argv_sql_stmt, char *argv_remainder, char *orgzd_sql)
SP_PARSER_CTX * parser
unsigned int ctx_uid
void * request_buffer
void shard_stmt_del_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id)
void shard_stmt_set_status_invalid(int stmt_h_id)
int shard_stmt_set_hint_list(T_SHARD_STMT *stmt_p)
T_SHARD_STMT * shard_stmt_find_by_stmt_h_id(int stmt_h_id)
T_SHARD_STMT * stmt_ent
void shard_stmt_check_waiter_and_wakeup(T_SHARD_STMT *stmt_p)
T_SHARD_STMT * lru_next
T_SHARD_STMT * mru
int shard_stmt_unpin(T_SHARD_STMT *stmt_p)
T_SHARD_STMT * shard_stmt_new_exclusive(char *sql_stmt, int ctx_cid, unsigned int ctx_uid, T_BROKER_VERSION client_version)
#define SRV_CON_DBUSER_SIZE
Definition: cas_protocol.h:55
int T_BROKER_VERSION
Definition: cas_protocol.h:342
T_SHARD_STMT * shard_stmt_find_by_sql(char *sql_stmt, const char *db_user, T_BROKER_VERSION client_version)
int shard_stmt_pin(T_SHARD_STMT *stmt_p)
int shard_stmt_find_srv_h_id_for_shard_cas(int stmt_h_id, int shard_id, int cas_id)
void shard_stmt_del_all_srv_h_id_for_shard_cas(int shard_id, int cas_id)
char * shard_stmt_rewrite_sql(bool *has_shard_val_hint, char *sql_stmt, char appl_server)
T_SHARD_STMT * shard_stmt_new_schema_info(int ctx_cid, unsigned int ctx_uid)
T_SHARD_STMT * hash_prev
T_SHARD_STMT * hash_next
void shard_stmt_destroy(void)
char * shard_str_stmt(T_SHARD_STMT *stmt_p)
T_SHARD_STMT * shard_stmt_new_prepared_stmt(char *sql_stmt, int ctx_cid, unsigned int ctx_uid, T_BROKER_VERSION client_version)