← Back to Overview

src/backend/utils/adt/ruleutils.c

Coverage: 103/107 lines (96.3%)
Total Lines
107
modified
Covered
103
96.3%
Uncovered
4
3.7%
키보드 네비게이션
append_pattern_quantifier() lines 6757-6785
Modified Lines Coverage: 18/22 lines (81.8%)
LineHitsSourceCommit
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).
get_rule_pattern_node() lines 6791-6839
Modified Lines Coverage: 34/34 lines (100.0%)
LineHitsSourceCommit
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).
get_rule_pattern() lines 6845-6853
Modified Lines Coverage: 6/6 lines (100.0%)
LineHitsSourceCommit
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).
get_rule_define() lines 6859-6875
Modified Lines Coverage: 12/12 lines (100.0%)
LineHitsSourceCommit
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).
get_rule_windowspec() lines 6916-7012
Modified Lines Coverage: 33/33 lines (100.0%)
LineHitsSourceCommit
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 - } -