Andres Freund <and...@anarazel.de> writes: > On 2016-12-31 12:08:22 -0500, Peter Eisentraut wrote: >> This is inspired by the dynamic_cast operator in C++, but follows the >> syntax of the well-known makeNode() macro.
> The analogy to dynamic_cast goes only so far, because we don't actually > support inheritance. I.e. in c++ we could successfully cast SeqScanState to a > PlanState, ScanState and SeqScanState - but with our model only > SeqScanState can be checked. Yeah, I was thinking about that earlier --- this can only be used to cast to a concrete node type, not one of the "abstract" types like Plan * or Expr *. Not sure if that's worth worrying about though; I don't think I've ever seen actual bugs in PG code from casting the wrong thing in that direction. For the most part, passing the wrong thing would end up firing a default: case in a switch, or some such, so we already do have some defenses for that direction. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers