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

Function act_set_generator

src/gpre/sql.cpp:4214–4255  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4212//
4213
4214static act* act_set_generator()
4215{
4216 gpre_req* request = MSC_request(REQ_set_generator);
4217
4218 if (gpreGlob.isc_databases && !gpreGlob.isc_databases->dbb_next)
4219 request->req_database = gpreGlob.isc_databases;
4220 else
4221 PAR_error("Can SET GENERATOR in context of single database only");
4222
4223 set_gen* setgen = (set_gen*) MSC_alloc(SGEN_LEN);
4224 setgen->sgen_name = (TEXT*) MSC_alloc(NAME_SIZE + 1);
4225 SQL_resolve_identifier("<identifier>", setgen->sgen_name, NAME_SIZE + 1);
4226 if (gpreGlob.token_global.tok_length >= NAME_SIZE)
4227 PAR_error("Generator name too long");
4228
4229 if (!MET_generator(setgen->sgen_name, request->req_database))
4230 {
4231 SCHAR s[ERROR_LENGTH];
4232 fb_utils::snprintf(s, sizeof(s),
4233 "generator %s not found", gpreGlob.token_global.tok_string);
4234 PAR_error(s);
4235 }
4236 PAR_get_token();
4237 MSC_match(KW_TO);
4238 if ((gpreGlob.sw_sql_dialect == SQL_DIALECT_V5) || (gpreGlob.sw_server_version < 6))
4239 {
4240 setgen->sgen_value = EXP_SLONG_ordinal(true);
4241 setgen->sgen_dialect = SQL_DIALECT_V5;
4242 }
4243 else
4244 {
4245 // dialect is > 1. Server can handle int64
4246
4247 setgen->sgen_int64value = EXP_SINT64_ordinal(true);
4248 setgen->sgen_dialect = SQL_DIALECT_V5 + 1;
4249 }
4250
4251 act* action = (act*) MSC_action(request, ACT_s_start);
4252 action->act_whenever = gen_whenever();
4253 action->act_object = (ref*) setgen;
4254 return action;
4255}
4256
4257
4258//____________________________________________________________

Callers 1

act_setFunction · 0.85

Calls 12

MSC_requestFunction · 0.85
MSC_allocFunction · 0.85
SQL_resolve_identifierFunction · 0.85
MET_generatorFunction · 0.85
PAR_get_tokenFunction · 0.85
MSC_matchFunction · 0.85
EXP_SLONG_ordinalFunction · 0.85
EXP_SINT64_ordinalFunction · 0.85
MSC_actionFunction · 0.85
PAR_errorFunction · 0.70
gen_wheneverFunction · 0.70
snprintfFunction · 0.50

Tested by

no test coverage detected