| Line | Hits | Source | Commit |
|---|---|---|---|
| 6757 | 833 | append_pattern_quantifier(StringInfo buf, RPRPatternNode *node) | 927ededRow pattern recognition patch (rewriter). |
| 6758 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6759 | 833 | bool has_quantifier = true; | 927ededRow pattern recognition patch (rewriter). |
| 6760 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6761 | 833 | if (node->min == 1 && node->max == 1) | 927ededRow pattern recognition patch (rewriter). |
| 6762 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6763 | - | /* {1,1} = no quantifier */ | 927ededRow pattern recognition patch (rewriter). |
| 6764 | 638 | has_quantifier = false; | 927ededRow pattern recognition patch (rewriter). |
| 6765 | 638 | } | 927ededRow pattern recognition patch (rewriter). |
| 6766 | 195 | else if (node->min == 0 && node->max == INT_MAX) | 927ededRow pattern recognition patch (rewriter). |
| 6767 | 18 | appendStringInfoChar(buf, '*'); | 927ededRow pattern recognition patch (rewriter). |
| 6768 | 177 | else if (node->min == 1 && node->max == INT_MAX) | 927ededRow pattern recognition patch (rewriter). |
| 6769 | 137 | appendStringInfoChar(buf, '+'); | 927ededRow pattern recognition patch (rewriter). |
| 6770 | 40 | else if (node->min == 0 && node->max == 1) | 927ededRow pattern recognition patch (rewriter). |
| 6771 | 5 | appendStringInfoChar(buf, '?'); | 927ededRow pattern recognition patch (rewriter). |
| 6772 | 35 | else if (node->max == INT_MAX) | 927ededRow pattern recognition patch (rewriter). |
| 6773 | 6 | appendStringInfo(buf, "{%d,}", node->min); | 927ededRow pattern recognition patch (rewriter). |
| 6774 | 29 | else if (node->min == node->max) | 927ededRow pattern recognition patch (rewriter). |
| 6775 | 15 | appendStringInfo(buf, "{%d}", node->min); | 927ededRow pattern recognition patch (rewriter). |
| 6776 | - | else | 927ededRow pattern recognition patch (rewriter). |
| 6777 | 14 | appendStringInfo(buf, "{%d,%d}", node->min, node->max); | 927ededRow pattern recognition patch (rewriter). |
| 6778 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6779 | 833 | if (node->reluctant >= 0) | 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse |
| 6780 | - | { | 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse |
| 6781 | 0 | if (!has_quantifier) | 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse |
| 6782 | 0 | appendStringInfo(buf, "{1}"); /* make reluctant ? unambiguous */ | 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse |
| 6783 | 0 | appendStringInfoChar(buf, '?'); | 927ededRow pattern recognition patch (rewriter). |
| 6784 | 0 | } | 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse |
| 6785 | 833 | } | 927ededRow pattern recognition patch (rewriter). |
| Line | Hits | Source | Commit |
|---|---|---|---|
| 6791 | 1156 | get_rule_pattern_node(RPRPatternNode *node, deparse_context *context) | 927ededRow pattern recognition patch (rewriter). |
| 6792 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6793 | 1156 | StringInfo buf = context->buf; | 927ededRow pattern recognition patch (rewriter). |
| 6794 | 1156 | ListCell *lc; | 927ededRow pattern recognition patch (rewriter). |
| 6795 | 1156 | const char *sep; | 927ededRow pattern recognition patch (rewriter). |
| 6796 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6797 | 1156 | Assert(node != NULL); | 927ededRow pattern recognition patch (rewriter). |
| 6798 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6799 | 1156 | switch (node->nodeType) | 927ededRow pattern recognition patch (rewriter). |
| 6800 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6801 | - | case RPR_PATTERN_VAR: | 927ededRow pattern recognition patch (rewriter). |
| 6802 | 669 | appendStringInfoString(buf, node->varName); | 927ededRow pattern recognition patch (rewriter). |
| 6803 | 669 | append_pattern_quantifier(buf, node); | 927ededRow pattern recognition patch (rewriter). |
| 6804 | 669 | break; | 927ededRow pattern recognition patch (rewriter). |
| 6805 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6806 | - | case RPR_PATTERN_SEQ: | 927ededRow pattern recognition patch (rewriter). |
| 6807 | 209 | sep = ""; | 927ededRow pattern recognition patch (rewriter). |
| 6808 | 746 | foreach(lc, node->children) | 927ededRow pattern recognition patch (rewriter). |
| 6809 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6810 | 537 | appendStringInfoString(buf, sep); | 927ededRow pattern recognition patch (rewriter). |
| 6811 | 537 | get_rule_pattern_node((RPRPatternNode *) lfirst(lc), context); | 927ededRow pattern recognition patch (rewriter). |
| 6812 | 537 | sep = " "; | 927ededRow pattern recognition patch (rewriter). |
| 6813 | 537 | } | 927ededRow pattern recognition patch (rewriter). |
| 6814 | 209 | break; | 927ededRow pattern recognition patch (rewriter). |
| 6815 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6816 | - | case RPR_PATTERN_ALT: | 927ededRow pattern recognition patch (rewriter). |
| 6817 | 114 | sep = ""; | 927ededRow pattern recognition patch (rewriter). |
| 6818 | 359 | foreach(lc, node->children) | 927ededRow pattern recognition patch (rewriter). |
| 6819 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6820 | 245 | appendStringInfoString(buf, sep); | 927ededRow pattern recognition patch (rewriter). |
| 6821 | 245 | get_rule_pattern_node((RPRPatternNode *) lfirst(lc), context); | 927ededRow pattern recognition patch (rewriter). |
| 6822 | 245 | sep = " | "; | 927ededRow pattern recognition patch (rewriter). |
| 6823 | 245 | } | 927ededRow pattern recognition patch (rewriter). |
| 6824 | 114 | break; | 927ededRow pattern recognition patch (rewriter). |
| 6825 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6826 | - | case RPR_PATTERN_GROUP: | 927ededRow pattern recognition patch (rewriter). |
| 6827 | 164 | appendStringInfoChar(buf, '('); | 927ededRow pattern recognition patch (rewriter). |
| 6828 | 164 | sep = ""; | 927ededRow pattern recognition patch (rewriter). |
| 6829 | 328 | foreach(lc, node->children) | 927ededRow pattern recognition patch (rewriter). |
| 6830 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6831 | 164 | appendStringInfoString(buf, sep); | 927ededRow pattern recognition patch (rewriter). |
| 6832 | 164 | get_rule_pattern_node((RPRPatternNode *) lfirst(lc), context); | 927ededRow pattern recognition patch (rewriter). |
| 6833 | 164 | sep = " "; | 927ededRow pattern recognition patch (rewriter). |
| 6834 | 164 | } | 927ededRow pattern recognition patch (rewriter). |
| 6835 | 164 | appendStringInfoChar(buf, ')'); | 927ededRow pattern recognition patch (rewriter). |
| 6836 | 164 | append_pattern_quantifier(buf, node); | 927ededRow pattern recognition patch (rewriter). |
| 6837 | 164 | break; | 927ededRow pattern recognition patch (rewriter). |
| 6838 | - | } | 927ededRow pattern recognition patch (rewriter). |
| 6839 | 1156 | } | 927ededRow pattern recognition patch (rewriter). |
| Line | Hits | Source | Commit |
|---|---|---|---|
| 6845 | 210 | get_rule_pattern(RPRPatternNode *rpPattern, bool force_colno, | 927ededRow pattern recognition patch (rewriter). |
| 6846 | - | deparse_context *context) | 927ededRow pattern recognition patch (rewriter). |
| 6847 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6848 | 210 | StringInfo buf = context->buf; | 927ededRow pattern recognition patch (rewriter). |
| 6849 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6850 | 210 | appendStringInfoChar(buf, '('); | 927ededRow pattern recognition patch (rewriter). |
| 6851 | 210 | get_rule_pattern_node(rpPattern, context); | 927ededRow pattern recognition patch (rewriter). |
| 6852 | 210 | appendStringInfoChar(buf, ')'); | 927ededRow pattern recognition patch (rewriter). |
| 6853 | 210 | } | 927ededRow pattern recognition patch (rewriter). |
| Line | Hits | Source | Commit |
|---|---|---|---|
| 6859 | 210 | get_rule_define(List *defineClause, bool force_colno, deparse_context *context) | 927ededRow pattern recognition patch (rewriter). |
| 6860 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6861 | 210 | StringInfo buf = context->buf; | 927ededRow pattern recognition patch (rewriter). |
| 6862 | 210 | const char *sep; | 927ededRow pattern recognition patch (rewriter). |
| 6863 | 210 | ListCell *lc_def; | 927ededRow pattern recognition patch (rewriter). |
| 6864 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6865 | 210 | sep = " "; | 927ededRow pattern recognition patch (rewriter). |
| 6866 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6867 | 756 | foreach(lc_def, defineClause) | 927ededRow pattern recognition patch (rewriter). |
| 6868 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6869 | 546 | TargetEntry *te = (TargetEntry *) lfirst(lc_def); | 927ededRow pattern recognition patch (rewriter). |
| 6870 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6871 | 546 | appendStringInfo(buf, "%s%s AS ", sep, te->resname); | 927ededRow pattern recognition patch (rewriter). |
| 6872 | 546 | get_rule_expr((Node *) te->expr, context, false); | 927ededRow pattern recognition patch (rewriter). |
| 6873 | 546 | sep = ",\n "; | 927ededRow pattern recognition patch (rewriter). |
| 6874 | 546 | } | 927ededRow pattern recognition patch (rewriter). |
| 6875 | 210 | } | 927ededRow pattern recognition patch (rewriter). |
| Line | Hits | Source | Commit |
|---|---|---|---|
| 6916 | - | get_rule_windowspec(WindowClause *wc, List *targetList, | - |
| 6917 | - | deparse_context *context) | - |
| 6918 | - | { | - |
| 6919 | - | StringInfo buf = context->buf; | - |
| 6920 | - | bool needspace = false; | - |
| 6921 | - | const char *sep; | - |
| 6922 | - | ListCell *l; | - |
| 6923 | - | - | |
| 6924 | - | appendStringInfoChar(buf, '('); | - |
| 6925 | - | if (wc->refname) | - |
| 6926 | - | { | - |
| 6927 | - | appendStringInfoString(buf, quote_identifier(wc->refname)); | - |
| 6928 | - | needspace = true; | - |
| 6929 | - | } | - |
| 6930 | - | /* partition clauses are always inherited, so only print if no refname */ | - |
| 6931 | - | if (wc->partitionClause && !wc->refname) | - |
| 6932 | - | { | - |
| 6933 | - | if (needspace) | - |
| 6934 | - | appendStringInfoChar(buf, ' '); | - |
| 6935 | - | appendStringInfoString(buf, "PARTITION BY "); | - |
| 6936 | - | sep = ""; | - |
| 6937 | - | foreach(l, wc->partitionClause) | - |
| 6938 | - | { | - |
| 6939 | - | SortGroupClause *grp = (SortGroupClause *) lfirst(l); | - |
| 6940 | - | - | |
| 6941 | - | appendStringInfoString(buf, sep); | - |
| 6942 | - | get_rule_sortgroupclause(grp->tleSortGroupRef, targetList, | - |
| 6943 | - | false, context); | - |
| 6944 | - | sep = ", "; | - |
| 6945 | - | } | - |
| 6946 | - | needspace = true; | - |
| 6947 | - | } | - |
| 6948 | - | /* print ordering clause only if not inherited */ | - |
| 6949 | - | if (wc->orderClause && !wc->copiedOrder) | - |
| 6950 | - | { | - |
| 6951 | - | if (needspace) | - |
| 6952 | - | appendStringInfoChar(buf, ' '); | - |
| 6953 | - | appendStringInfoString(buf, "ORDER BY "); | - |
| 6954 | - | get_rule_orderby(wc->orderClause, targetList, false, context); | - |
| 6955 | - | needspace = true; | - |
| 6956 | - | } | - |
| 6957 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6958 | - | /* framing clause is never inherited, so print unless it's default */ | - |
| 6959 | - | if (wc->frameOptions & FRAMEOPTION_NONDEFAULT) | - |
| 6960 | - | { | - |
| 6961 | - | if (needspace) | - |
| 6962 | - | appendStringInfoChar(buf, ' '); | - |
| 6963 | - | get_window_frame_options(wc->frameOptions, | - |
| 6964 | - | wc->startOffset, wc->endOffset, | - |
| 6965 | - | context); | - |
| 6966 | 210 | needspace = true; | 927ededRow pattern recognition patch (rewriter). |
| 6967 | - | } | - |
| 6968 | - | 927ededRow pattern recognition patch (rewriter). | |
| 6969 | - | /* RPR */ | 927ededRow pattern recognition patch (rewriter). |
| 6970 | 210 | if (wc->rpSkipTo == ST_NEXT_ROW) | 927ededRow pattern recognition patch (rewriter). |
| 6971 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6972 | 1 | if (needspace) | 927ededRow pattern recognition patch (rewriter). |
| 6973 | 1 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 6974 | 1 | appendStringInfoString(buf, | 927ededRow pattern recognition patch (rewriter). |
| 6975 | - | "\n AFTER MATCH SKIP TO NEXT ROW "); | 927ededRow pattern recognition patch (rewriter). |
| 6976 | 1 | needspace = true; | 927ededRow pattern recognition patch (rewriter). |
| 6977 | 1 | } | 927ededRow pattern recognition patch (rewriter). |
| 6978 | 209 | else if (wc->rpSkipTo == ST_PAST_LAST_ROW) | 927ededRow pattern recognition patch (rewriter). |
| 6979 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6980 | 209 | if (needspace) | 927ededRow pattern recognition patch (rewriter). |
| 6981 | 209 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 6982 | 209 | appendStringInfoString(buf, | 927ededRow pattern recognition patch (rewriter). |
| 6983 | - | "\n AFTER MATCH SKIP PAST LAST ROW "); | 927ededRow pattern recognition patch (rewriter). |
| 6984 | 209 | needspace = true; | 927ededRow pattern recognition patch (rewriter). |
| 6985 | 209 | } | 927ededRow pattern recognition patch (rewriter). |
| 6986 | 210 | if (wc->initial) | 927ededRow pattern recognition patch (rewriter). |
| 6987 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6988 | 210 | if (needspace) | 927ededRow pattern recognition patch (rewriter). |
| 6989 | 210 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 6990 | 210 | appendStringInfoString(buf, "\n INITIAL"); | 927ededRow pattern recognition patch (rewriter). |
| 6991 | 210 | needspace = true; | 927ededRow pattern recognition patch (rewriter). |
| 6992 | 210 | } | 8b1b342Improve EXPLAIN's display of window functions. |
| 6993 | 210 | if (wc->rpPattern) | 927ededRow pattern recognition patch (rewriter). |
| 6994 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 6995 | 210 | if (needspace) | 927ededRow pattern recognition patch (rewriter). |
| 6996 | 210 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 6997 | 210 | appendStringInfoString(buf, "\n PATTERN "); | 927ededRow pattern recognition patch (rewriter). |
| 6998 | 210 | get_rule_pattern(wc->rpPattern, false, context); | 927ededRow pattern recognition patch (rewriter). |
| 6999 | 210 | needspace = true; | 927ededRow pattern recognition patch (rewriter). |
| 7000 | 210 | } | 927ededRow pattern recognition patch (rewriter). |
| 7001 | - | 927ededRow pattern recognition patch (rewriter). | |
| 7002 | 210 | if (wc->defineClause) | 927ededRow pattern recognition patch (rewriter). |
| 7003 | - | { | 927ededRow pattern recognition patch (rewriter). |
| 7004 | 210 | if (needspace) | 927ededRow pattern recognition patch (rewriter). |
| 7005 | 210 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 7006 | 210 | appendStringInfoString(buf, "\n DEFINE\n"); | 927ededRow pattern recognition patch (rewriter). |
| 7007 | 210 | get_rule_define(wc->defineClause, false, context); | 927ededRow pattern recognition patch (rewriter). |
| 7008 | 210 | appendStringInfoChar(buf, ' '); | 927ededRow pattern recognition patch (rewriter). |
| 7009 | 210 | } | 927ededRow pattern recognition patch (rewriter). |
| 7010 | - | 927ededRow pattern recognition patch (rewriter). | |
| 7011 | - | appendStringInfoChar(buf, ')'); | - |
| 7012 | - | } | - |