Hi. I'd like to remove RPRElemCanExit() and RPRElemCanLoop() and compare the count with min and max directly.
RPRElemIsVar() and RPRElemIsEnd() are fine, because their names say exactly what they test. "Can exit" and "Can loop" don't: to understand them, the reader has to work out what they mean for the count, while ``(count < elem->min)`` or ``(count >= elem->max)`` needs no explanation. Similarly, I also want to remove RPRCountIncrement and RPRElemWithinMax. --------------- I'm still not convinced by how EXPLAIN shows context absorption (I may have asked about this before). See append_rpr_quantifier. The pattern is printed with markers on its elements, "#" for the comparison point and "~" for the elements inside the absorbable region, for example: Pattern: (((a~ b~)+# c)+ d)+ This seems odd to me, because the pattern as the user wrote it no longer appears anywhere in the plan. The markers are compact, but they are hard to read for anyone who does not already know the absorption design, and since they change the pattern text itself, every EXPLAIN output that shows a pattern carries them. A single extra line could say the same thing: Pattern: (((a b)+ c)+ d)+ Absorbable Pattern: (a b)+ and for a pattern that cannot be absorbed, the line would simply be absent: Pattern: s a+ b Is there a reason the markers are preferable? -- jian https://www.enterprisedb.com/
