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

Function EXP_post_field

src/gpre/exp.cpp:570–621  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

568//
569
570ref* EXP_post_field(gpre_fld* field, gpre_ctx* context, bool null_flag)
571{
572 TEXT s[128];
573
574 gpre_req* request = context->ctx_request;
575
576 // If the reference is already posted, return the reference
577
578 ref* reference;
579 for (reference = request->req_references; reference; reference = reference->ref_next)
580 {
581 if (reference->ref_context == context)
582 {
583 gpre_fld* ref_field = reference->ref_field;
584 if (ref_field == field ||
585 (ref_field->fld_symbol == field->fld_symbol && ref_field->fld_array == field->fld_array))
586 {
587 if (!null_flag &&
588 (ref_field->fld_dtype != field->fld_dtype ||
589 ref_field->fld_length != field->fld_length ||
590 ref_field->fld_scale != field->fld_scale))
591 {
592 if (reference->ref_flags & REF_null)
593 reference->ref_field = field;
594 else
595 {
596 sprintf(s, "field %s is inconsistently cast", field->fld_symbol->sym_string);
597 PAR_error(s);
598 }
599 }
600 if (request->req_level > reference->ref_level)
601 reference->ref_level = request->req_level;
602
603 if (!null_flag)
604 reference->ref_flags &= ~REF_null;
605 return reference;
606 }
607 }
608 }
609
610 // This is first occurrence of field, make a new reference
611
612 reference = MSC_reference(&request->req_references);
613 reference->ref_context = context;
614 reference->ref_field = field;
615 reference->ref_level = request->req_level;
616
617 if (null_flag)
618 reference->ref_flags |= REF_null;
619
620 return reference;
621}
622
623
624//____________________________________________________________

Callers 5

par_fieldFunction · 0.85
PAR_event_initFunction · 0.85
par_open_blobFunction · 0.85
par_sliceFunction · 0.85
par_variableFunction · 0.85

Calls 2

MSC_referenceFunction · 0.85
PAR_errorFunction · 0.70

Tested by

no test coverage detected