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

Function act_alter_domain

src/gpre/sql.cpp:1223–1310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1221//
1222
1223static act* act_alter_domain()
1224{
1225 // create request block
1226
1227 gpre_req* request = MSC_request(REQ_ddl);
1228 if (gpreGlob.isc_databases && !gpreGlob.isc_databases->dbb_next)
1229 request->req_database = gpreGlob.isc_databases;
1230 else
1231 PAR_error("Can only ALTER a domain in context of single database");
1232
1233 // create action block
1234
1235 act* action = MSC_action(request, ACT_alter_domain);
1236
1237 PAR_get_token();
1238 gpre_fld* field = make_field(0);
1239 cnstrt** cnstrt_ptr = &field->fld_constraints;
1240
1241 // Check if default value was specified
1242
1243 while (!end_of_command())
1244 {
1245 if (MSC_match(KW_SET))
1246 {
1247 if (gpreGlob.token_global.tok_keyword == KW_DEFAULT)
1248 {
1249 field->fld_default_source = CPR_start_text();
1250 PAR_get_token();
1251 }
1252 else
1253 CPR_s_error("DEFAULT");
1254
1255 if (MSC_match(KW_USER))
1256 field->fld_default_value = MSC_node(nod_user_name, 0);
1257 else if (MSC_match(KW_NULL))
1258 field->fld_default_value = MSC_node(nod_null, 0);
1259 else
1260 {
1261 if (MSC_match(KW_MINUS))
1262 {
1263 if (gpreGlob.token_global.tok_type != tok_number)
1264 CPR_s_error("<number>");
1265
1266 gpre_nod* literal_node = EXP_literal();
1267 field->fld_default_value = MSC_unary(nod_negate, literal_node);
1268 }
1269 else if ((field->fld_default_value = EXP_literal()) == NULL)
1270 CPR_s_error("<constant>");
1271 }
1272 CPR_end_text(field->fld_default_source);
1273 }
1274 else if (MSC_match(KW_ADD))
1275 {
1276 MSC_match(KW_CONSTRAINT);
1277 if (gpreGlob.token_global.tok_keyword == KW_CHECK)
1278 {
1279 cnstrt* cnstrt_str = par_field_constraint(request, field);
1280 *cnstrt_ptr = cnstrt_str;

Callers 1

act_alterFunction · 0.85

Calls 15

MSC_requestFunction · 0.85
MSC_actionFunction · 0.85
PAR_get_tokenFunction · 0.85
make_fieldFunction · 0.85
end_of_commandFunction · 0.85
MSC_matchFunction · 0.85
CPR_start_textFunction · 0.85
CPR_s_errorFunction · 0.85
MSC_nodeFunction · 0.85
EXP_literalFunction · 0.85
MSC_unaryFunction · 0.85
CPR_end_textFunction · 0.85

Tested by

no test coverage detected