| 4397 | } |
| 4398 | |
| 4399 | void |
| 4400 | ExecEvalSysVar(ExprState *state, ExprEvalStep *op, ExprContext *econtext, |
| 4401 | TupleTableSlot *slot) |
| 4402 | { |
| 4403 | Datum d; |
| 4404 | |
| 4405 | /* slot_getsysattr has sufficient defenses against bad attnums */ |
| 4406 | d = slot_getsysattr(slot, |
| 4407 | op->d.var.attnum, |
| 4408 | op->resnull); |
| 4409 | *op->resvalue = d; |
| 4410 | /* this ought to be unreachable, but it's cheap enough to check */ |
| 4411 | if (unlikely(*op->resnull)) |
| 4412 | elog(ERROR, "failed to fetch attribute from slot"); |
| 4413 | } |
| 4414 | |
| 4415 | /* |
| 4416 | * Transition value has not been initialized. This is the first non-NULL input |
no test coverage detected