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

Function create_trg_firing_cond

src/gpre/cmd.cpp:461–502  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

459//
460
461static void create_trg_firing_cond( gpre_req* request, const cnstrt* constraint)
462{
463 // count primary key columns
464 const gpre_lls* prim_key_fld = constraint->cnstrt_referred_fields;
465 const gpre_lls* field = prim_key_fld;
466
467 fb_assert(field != NULL);
468
469 USHORT prim_key_num_flds = 0;
470 while (field)
471 {
472 prim_key_num_flds++;
473 field = field->lls_next;
474 }
475
476 fb_assert(prim_key_num_flds > 0);
477
478 // generate blr
479 request->add_byte(blr_if);
480 if (prim_key_num_flds > 1)
481 request->add_byte(blr_or);
482
483 USHORT num_flds = 0;
484 for (; prim_key_fld; prim_key_fld = prim_key_fld->lls_next)
485 {
486 request->add_byte(blr_neq);
487
488 const str* prim_key_fld_name = (STR) prim_key_fld->lls_object;
489
490 request->add_byte(blr_field);
491 request->add_byte((SSHORT) 0);
492 put_cstring(request, 0, prim_key_fld_name->str_string);
493 request->add_byte(blr_field);
494 request->add_byte((SSHORT) 1);
495 put_cstring(request, 0, prim_key_fld_name->str_string);
496
497 ++num_flds;
498
499 if (prim_key_num_flds - num_flds >= 2)
500 request->add_byte(blr_or);
501 }
502}
503
504
505//____________________________________________________________

Callers 3

create_upd_cascade_trgFunction · 0.85
create_set_default_trgFunction · 0.85
create_set_null_trgFunction · 0.85

Calls 2

put_cstringFunction · 0.85
add_byteMethod · 0.45

Tested by

no test coverage detected