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

Function PAR_parseRecordSource

src/jrd/par.cpp:1269–1315  ·  view source on GitHub ↗

Parse a RecordSourceNode.

Source from the content-addressed store, hash-verified

1267
1268// Parse a RecordSourceNode.
1269RecordSourceNode* PAR_parseRecordSource(thread_db* tdbb, CompilerScratch* csb)
1270{
1271 SET_TDBB(tdbb);
1272
1273 const SSHORT blrOp = csb->csb_blr_reader.getByte();
1274
1275 switch (blrOp)
1276 {
1277 case blr_pid:
1278 case blr_pid2:
1279 case blr_procedure:
1280 case blr_procedure2:
1281 case blr_procedure3:
1282 case blr_procedure4:
1283 case blr_subproc:
1284 return ProcedureSourceNode::parse(tdbb, csb, blrOp, true);
1285
1286 case blr_rse:
1287 case blr_lateral_rse:
1288 case blr_rs_stream:
1289 return PAR_rse(tdbb, csb, blrOp);
1290
1291 case blr_relation:
1292 case blr_rid:
1293 case blr_relation2:
1294 case blr_rid2:
1295 return RelationSourceNode::parse(tdbb, csb, blrOp, true);
1296
1297 case blr_local_table_id:
1298 return LocalTableSourceNode::parse(tdbb, csb, blrOp, true);
1299
1300 case blr_union:
1301 case blr_recurse:
1302 return UnionSourceNode::parse(tdbb, csb, blrOp);
1303
1304 case blr_window:
1305 return WindowSourceNode::parse(tdbb, csb);
1306
1307 case blr_aggregate:
1308 return AggregateSourceNode::parse(tdbb, csb);
1309
1310 default:
1311 PAR_syntax_error(csb, "record source");
1312 }
1313
1314 return NULL; // silence warning
1315}
1316
1317
1318// Parse a record selection expression.

Callers 3

parseMethod · 0.85
PAR_rseFunction · 0.85
PAR_parse_nodeFunction · 0.85

Calls 4

SET_TDBBFunction · 0.85
PAR_rseFunction · 0.85
PAR_syntax_errorFunction · 0.85
getByteMethod · 0.45

Tested by

no test coverage detected