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

Function SQE_resolve

src/gpre/sqe.cpp:932–1081  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

930//
931
932bool SQE_resolve(gpre_nod** node_ptr, gpre_req* request, gpre_rse* selection)
933{
934 bool result = false;
935 act* slice_action = 0;
936
937 gpre_nod* node = *node_ptr;
938
939 assert_IS_REQ(request);
940 assert_IS_NOD(node);
941
942 switch (node->nod_type)
943 {
944 case nod_plus:
945 case nod_minus:
946 case nod_times:
947 case nod_divide:
948 case nod_negate:
949 case nod_and:
950 case nod_or:
951 case nod_not:
952 case nod_eq:
953 case nod_ne:
954 case nod_ge:
955 case nod_gt:
956 case nod_le:
957 case nod_lt:
958 case nod_containing:
959 case nod_like:
960 case nod_between:
961 case nod_starting:
962 case nod_upcase:
963 case nod_lowcase:
964 case nod_concatenate:
965 case nod_cast:
966 case nod_case:
967 case nod_case1:
968 case nod_substring:
969 {
970 gpre_nod** ptr = node->nod_arg;
971 const gpre_nod* const* const end = ptr + node->nod_count;
972 for (; ptr < end; ptr++)
973 result |= SQE_resolve(ptr, request, selection);
974 return result;
975 }
976
977 case nod_agg_max:
978 case nod_agg_min:
979 case nod_agg_total:
980 case nod_agg_average:
981 case nod_agg_count:
982 if (node->nod_arg[0])
983 {
984 SQE_resolve(&node->nod_arg[0], request, selection);
985 gpre_nod* node_arg = node->nod_arg[0];
986 const ref* reference = (ref*) node_arg->nod_arg[0];
987 if (node_arg->nod_type == nod_field && reference &&
988 reference->ref_field && reference->ref_field->fld_array_info)
989 {

Callers 5

act_updateFunction · 0.85
act_upsertFunction · 0.85
return_valuesFunction · 0.85
par_notFunction · 0.85
resolve_fieldsFunction · 0.85

Calls 7

HSH_lookupFunction · 0.85
resolveFunction · 0.85
SQL_dialect1_bad_typeFunction · 0.85
MSC_allocFunction · 0.85
MSC_unaryFunction · 0.85
PAR_errorFunction · 0.70
snprintfFunction · 0.50

Tested by

no test coverage detected