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

Function gen_blob_open

src/gpre/languages/cob.cpp:1120–1183  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1118//
1119
1120static void gen_blob_open( const act* action)
1121{
1122 const TEXT* pattern1 =
1123 "CALL \"isc_%IFcreate%ELopen%EN_blob2\" USING %V1, %RF%DH%RE, %RF%RT%RE, %RF%BH%RE, %RF%FR%RE, %VF%N1%VE, %RF%I1%RE\n";
1124 const TEXT* pattern2 =
1125 "CALL \"isc_%IFcreate%ELopen%EN_blob2\" USING %V1, %RF%DH%RE, %RF%RT%RE, %RF%BH%RE, %RF%FR%RE, %VF0%VE, %VF0%VE\n";
1126
1127 if (gpreGlob.sw_auto && (action->act_flags & ACT_sql))
1128 {
1129 t_start_auto(action->act_request, status_vector(action), action, true);
1130 printa(names[COLUMN], false, "IF %s NOT = 0 THEN", request_trans(action, action->act_request));
1131 }
1132
1133 TEXT s[MAX_REF_SIZE];
1134 const blb* blob;
1135 const ref* reference;
1136 if (action->act_flags & ACT_sql)
1137 {
1138 gen_cursor_open(action, action->act_request);
1139 blob = (blb*) action->act_request->req_blobs;
1140 reference = ((open_cursor*) action->act_object)->opn_using;
1141 gen_name(s, reference, true);
1142 }
1143 else
1144 {
1145 blob = (blb*) action->act_object;
1146 reference = blob->blb_reference;
1147 }
1148
1149 const USHORT column = static_cast<USHORT>(strlen(names[COLUMN]));
1150 PAT args;
1151 args.pat_condition = (action->act_type == ACT_blob_create); // open or create blob
1152 args.pat_vector1 = status_vector(action); // status vector
1153 args.pat_database = blob->blb_request->req_database; // database handle
1154 args.pat_request = blob->blb_request; // transaction handle
1155 args.pat_blob = blob; // blob handle
1156 args.pat_reference = reference; // blob identifier
1157 args.pat_ident1 = blob->blb_bpb_ident; // blob parameter block
1158
1159 if ((action->act_flags & ACT_sql) && action->act_type == ACT_blob_open)
1160 printa(names[COLUMN], false, "MOVE %s TO %s", reference->ref_value, s);
1161
1162 if (args.pat_value1 = blob->blb_bpb_length)
1163 PATTERN_expand(column, pattern1, &args);
1164 else
1165 PATTERN_expand(column, pattern2, &args);
1166
1167 if (action->act_flags & ACT_sql)
1168 {
1169 printa(names[COLUMN], false, "END-IF");
1170 printa(names[COLUMN], false, "END-IF");
1171 printa(names[COLUMN], false, "END-IF");
1172 printa(names[COLUMN], false, "END-IF");
1173 if (gpreGlob.sw_auto)
1174 printa(names[COLUMN], false, "END-IF");
1175 set_sqlcode(action);
1176 if (action->act_type == ACT_blob_create)
1177 {

Callers 2

COB_actionFunction · 0.70
gen_blob_forFunction · 0.70

Calls 8

PATTERN_expandFunction · 0.85
t_start_autoFunction · 0.70
status_vectorFunction · 0.70
printaFunction · 0.70
request_transFunction · 0.70
gen_cursor_openFunction · 0.70
gen_nameFunction · 0.70
set_sqlcodeFunction · 0.70

Tested by

no test coverage detected