MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / act_d_section

Function act_d_section

src/gpre/sql.cpp:2156–2223  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2154//
2155
2156static act* act_d_section(act_t type)
2157{
2158 if (!MSC_match(KW_DECLARE))
2159 CPR_s_error("DECLARE SECTION");
2160
2161 if (!MSC_match(KW_SECTION))
2162 CPR_s_error("SECTION");
2163
2164 MSC_match(KW_SEMI_COLON);
2165
2166 act* action = (act*) MSC_alloc(ACT_LEN);
2167 action->act_type = type;
2168
2169 if (type == ACT_b_declare)
2170 gpreGlob.cur_routine = action; // Hmm, global var.
2171
2172 if (!gpreGlob.isc_databases)
2173 {
2174 // allocate database block and link to db chain
2175
2176 gpreGlob.isc_databases = (gpre_dbb*) MSC_alloc_permanent(DBB_LEN);
2177
2178 // allocate symbol block
2179
2180 gpre_sym* symbol = (gpre_sym*) MSC_alloc_permanent(SYM_LEN);
2181
2182 // make it a database, specifically this one
2183
2184 symbol->sym_type = SYM_database;
2185 symbol->sym_object = (gpre_ctx*) gpreGlob.isc_databases;
2186 symbol->sym_string = gpreGlob.database_name;
2187
2188 // database block points to the symbol block
2189
2190 gpreGlob.isc_databases->dbb_name = symbol;
2191 gpreGlob.isc_databases->dbb_filename = NULL;
2192 gpreGlob.isc_databases->dbb_flags = DBB_sqlca;
2193 gpreGlob.isc_databases->dbb_c_lc_ctype = gpreGlob.module_lc_ctype;
2194 if (gpreGlob.sw_external)
2195 gpreGlob.isc_databases->dbb_scope = DBB_EXTERN;
2196 }
2197 else
2198 {
2199 // Load up the symbol (hash) table with relation names from this database
2200
2201 MET_load_hash_table(gpreGlob.isc_databases);
2202 }
2203
2204 HSH_insert(gpreGlob.isc_databases->dbb_name);
2205
2206 if (MSC_match(KW_SQL))
2207 {
2208 if (!MSC_match(KW_NAMES))
2209 CPR_s_error("NAMES ARE");
2210 if (!MSC_match(KW_ARE))
2211 CPR_s_error("NAMES ARE");
2212 gpre_sym* symbol = MSC_find_symbol(gpreGlob.token_global.tok_symbol, SYM_charset);
2213 if (!symbol)

Callers 1

SQL_actionFunction · 0.85

Calls 9

MSC_matchFunction · 0.85
CPR_s_errorFunction · 0.85
MSC_allocFunction · 0.85
MSC_alloc_permanentFunction · 0.85
MET_load_hash_tableFunction · 0.85
HSH_insertFunction · 0.85
MSC_find_symbolFunction · 0.85
CPR_tokenFunction · 0.85
PAR_errorFunction · 0.70

Tested by

no test coverage detected