← Back to Overview

src/backend/commands/explain.c

Coverage: 251/255 lines (98.4%)
Total Lines
255
modified
Covered
251
98.4%
Uncovered
4
1.6%
키보드 네비게이션
append_rpr_quantifier() lines 2912-2943
Modified Lines Coverage: 21/25 lines (84.0%)
LineHitsSourceCommit
2912 465 append_rpr_quantifier(StringInfo buf, RPRPatternElement *elem) 56aa37bRow pattern recognition patch (executor and commands).
2913 - { 56aa37bRow pattern recognition patch (executor and commands).
2914 - /* Append quantifier if not {1,1} */ 56aa37bRow pattern recognition patch (executor and commands).
2915 465 if (elem->min == 0 && elem->max == RPR_QUANTITY_INF) 56aa37bRow pattern recognition patch (executor and commands).
2916 13 appendStringInfoChar(buf, '*'); 56aa37bRow pattern recognition patch (executor and commands).
2917 452 else if (elem->min == 1 && elem->max == RPR_QUANTITY_INF) 56aa37bRow pattern recognition patch (executor and commands).
2918 79 appendStringInfoChar(buf, '+'); 56aa37bRow pattern recognition patch (executor and commands).
2919 373 else if (elem->min == 0 && elem->max == 1) 56aa37bRow pattern recognition patch (executor and commands).
2920 3 appendStringInfoChar(buf, '?'); 56aa37bRow pattern recognition patch (executor and commands).
2921 370 else if (elem->max == RPR_QUANTITY_INF) 56aa37bRow pattern recognition patch (executor and commands).
2922 32 appendStringInfo(buf, "{%d,}", elem->min); 56aa37bRow pattern recognition patch (executor and commands).
2923 338 else if (elem->min == elem->max && elem->min != 1) 56aa37bRow pattern recognition patch (executor and commands).
2924 27 appendStringInfo(buf, "{%d}", elem->min); 56aa37bRow pattern recognition patch (executor and commands).
2925 311 else if (elem->min != 1 || elem->max != 1) 56aa37bRow pattern recognition patch (executor and commands).
2926 13 appendStringInfo(buf, "{%d,%d}", elem->min, elem->max); 56aa37bRow pattern recognition patch (executor and commands).
2927 - 56aa37bRow pattern recognition patch (executor and commands).
2928 465 if (RPRElemIsReluctant(elem)) 56aa37bRow pattern recognition patch (executor and commands).
2929 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2930 0 if (elem->min == 1 && elem->max == 1) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2931 0 appendStringInfo(buf, "{1}"); /* make reluctant ? unambiguous */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2932 0 appendStringInfoChar(buf, '?'); 56aa37bRow pattern recognition patch (executor and commands).
2933 0 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2934 - 56aa37bRow pattern recognition patch (executor and commands).
2935 - /* Append absorption markers: " for judgment point, ' for branch only */ 56aa37bRow pattern recognition patch (executor and commands).
2936 465 if (RPRElemIsAbsorbable(elem)) 56aa37bRow pattern recognition patch (executor and commands).
2937 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2938 78 Assert(elem->max == RPR_QUANTITY_INF); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2939 78 appendStringInfoChar(buf, '"'); 56aa37bRow pattern recognition patch (executor and commands).
2940 78 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2941 387 else if (RPRElemIsAbsorbableBranch(elem)) 56aa37bRow pattern recognition patch (executor and commands).
2942 41 appendStringInfoChar(buf, '\''); 56aa37bRow pattern recognition patch (executor and commands).
2943 465 } 56aa37bRow pattern recognition patch (executor and commands).
deparse_rpr_pattern() lines 2953-2975
Modified Lines Coverage: 13/13 lines (100.0%)
LineHitsSourceCommit
2953 165 deparse_rpr_pattern(RPRPattern *pattern) 56aa37bRow pattern recognition patch (executor and commands).
2954 - { 56aa37bRow pattern recognition patch (executor and commands).
2955 165 StringInfoData buf; 56aa37bRow pattern recognition patch (executor and commands).
2956 165 int idx = 0; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2957 165 RPRDepth prevDepth = 0; 56aa37bRow pattern recognition patch (executor and commands).
2958 165 bool needSpace = false; 56aa37bRow pattern recognition patch (executor and commands).
2959 - 56aa37bRow pattern recognition patch (executor and commands).
2960 165 Assert(pattern != NULL && pattern->numElements >= 2); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2961 - 56aa37bRow pattern recognition patch (executor and commands).
2962 165 initStringInfo(&buf); 56aa37bRow pattern recognition patch (executor and commands).
2963 - 56aa37bRow pattern recognition patch (executor and commands).
2964 165 deparse_rpr_elements(pattern, &idx, &buf, RPR_DEPTH_NONE, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2965 - &prevDepth, &needSpace); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2966 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2967 - /* Close remaining open parens */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2968 179 while (prevDepth > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2969 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2970 14 appendStringInfoChar(&buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2971 14 prevDepth--; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2972 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2973 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2974 330 return buf.data; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2975 165 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
deparse_rpr_elements() lines 2985-3028
Modified Lines Coverage: 28/28 lines (100.0%)
LineHitsSourceCommit
2985 232 deparse_rpr_elements(RPRPattern *pattern, int *idx, StringInfoData *buf, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2986 - RPRDepth groupDepth, RPRDepth *prevDepth, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2987 - bool *needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2988 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2989 232 List *altSeps = NIL; /* pending alternation separator indices */ 9d2796cReview NFA executor and add comprehensive runtime tests
2990 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2991 745 while (*idx < pattern->numElements) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2992 - { 56aa37bRow pattern recognition patch (executor and commands).
2993 745 RPRPatternElement *elem = &pattern->elements[*idx]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2994 - 56aa37bRow pattern recognition patch (executor and commands).
2995 745 if (RPRElemIsFin(elem)) 56aa37bRow pattern recognition patch (executor and commands).
2996 165 break; 56aa37bRow pattern recognition patch (executor and commands).
2997 - 56aa37bRow pattern recognition patch (executor and commands).
2998 - /* Stop at END matching our group depth; caller handles it */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
2999 580 if (RPRElemIsEnd(elem) && elem->depth == groupDepth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3000 67 break; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3001 - 56aa37bRow pattern recognition patch (executor and commands).
3002 - /* Alternation separator */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3003 513 if (list_member_int(altSeps, *idx)) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3004 - { 56aa37bRow pattern recognition patch (executor and commands).
3005 - /* Close parens to match separator depth first */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3006 60 while (*prevDepth > elem->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3007 - { 56aa37bRow pattern recognition patch (executor and commands).
3008 1 appendStringInfoChar(buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3009 1 (*prevDepth)--; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3010 - } 56aa37bRow pattern recognition patch (executor and commands).
3011 59 appendStringInfoString(buf, " | "); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3012 59 *needSpace = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3013 59 altSeps = list_delete_int(altSeps, *idx); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3014 59 } 56aa37bRow pattern recognition patch (executor and commands).
3015 - 56aa37bRow pattern recognition patch (executor and commands).
3016 - /* Dispatch to element-type handlers */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3017 513 if (RPRElemIsAlt(elem)) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3018 96 deparse_rpr_alt(pattern, idx, buf, prevDepth, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3019 48 needSpace, &altSeps); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3020 465 else if (RPRElemIsBegin(elem)) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3021 134 deparse_rpr_group(pattern, idx, buf, prevDepth, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3022 67 needSpace); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3023 398 else if (RPRElemIsVar(elem)) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3024 796 deparse_rpr_var(pattern, idx, buf, prevDepth, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3025 398 needSpace, &altSeps); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3026 745 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3027 232 list_free(altSeps); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3028 232 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
deparse_rpr_group() lines 3041-3105
Modified Lines Coverage: 41/41 lines (100.0%)
LineHitsSourceCommit
3041 67 deparse_rpr_group(RPRPattern *pattern, int *idx, StringInfoData *buf, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3042 - RPRDepth *prevDepth, bool *needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3043 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3044 67 RPRPatternElement *begin = &pattern->elements[*idx]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3045 67 RPRDepth childDepth = begin->depth + 1; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3046 67 bool singleAlt = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3047 67 RPRPatternElement *end; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3048 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3049 - /* 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3050 - * Check if this group wraps a single ALT with no siblings. Scan from 9d2796cReview NFA executor and add comprehensive runtime tests
3051 - * after ALT to END: if no element at childDepth exists, the ALT is the 9d2796cReview NFA executor and add comprehensive runtime tests
3052 - * sole child. 9d2796cReview NFA executor and add comprehensive runtime tests
3053 - */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3054 67 if (*idx + 1 < pattern->numElements && 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3055 67 RPRElemIsAlt(&pattern->elements[*idx + 1])) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3056 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3057 20 int j; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3058 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3059 20 singleAlt = true; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3060 65 for (j = *idx + 2; j < pattern->numElements; j++) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3061 - { 56aa37bRow pattern recognition patch (executor and commands).
3062 65 RPRPatternElement *e = &pattern->elements[j]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3063 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3064 65 if (RPRElemIsEnd(e) && e->depth == begin->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3065 19 break; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3066 46 if (e->depth <= childDepth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3067 - { 56aa37bRow pattern recognition patch (executor and commands).
3068 1 singleAlt = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3069 1 break; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3070 - } 56aa37bRow pattern recognition patch (executor and commands).
3071 65 } 56aa37bRow pattern recognition patch (executor and commands).
3072 20 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3073 - 56aa37bRow pattern recognition patch (executor and commands).
3074 - /* Open group paren (unless single ALT provides it) */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3075 67 if (!singleAlt) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3076 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3077 48 if (*needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3078 8 appendStringInfoChar(buf, ' '); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3079 48 appendStringInfoChar(buf, '('); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3080 48 *needSpace = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3081 48 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3082 67 *prevDepth = childDepth; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3083 67 (*idx)++; /* consume BEGIN */ 9d2796cReview NFA executor and add comprehensive runtime tests
3084 - 56aa37bRow pattern recognition patch (executor and commands).
3085 - /* Process group children; stops at matching END */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3086 134 deparse_rpr_elements(pattern, idx, buf, begin->depth, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3087 67 prevDepth, needSpace); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3088 - 56aa37bRow pattern recognition patch (executor and commands).
3089 - /* Consume END and output quantifier */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3090 67 Assert(*idx < pattern->numElements); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3091 67 end = &pattern->elements[*idx]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3092 67 Assert(RPRElemIsEnd(end) && end->depth == begin->depth); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3093 - 56aa37bRow pattern recognition patch (executor and commands).
3094 87 while (*prevDepth > end->depth + 1) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3095 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3096 20 appendStringInfoChar(buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3097 20 (*prevDepth)--; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3098 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3099 67 if (!singleAlt) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3100 48 appendStringInfoChar(buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3101 67 append_rpr_quantifier(buf, end); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3102 67 *prevDepth = end->depth; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3103 67 *needSpace = true; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3104 67 (*idx)++; /* consume END */ 9d2796cReview NFA executor and add comprehensive runtime tests
3105 67 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
deparse_rpr_alt() lines 3111-3145
Modified Lines Coverage: 21/21 lines (100.0%)
LineHitsSourceCommit
3111 48 deparse_rpr_alt(RPRPattern *pattern, int *idx, StringInfoData *buf, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3112 - RPRDepth *prevDepth, bool *needSpace, List **altSeps) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3113 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3114 48 RPRPatternElement *elem = &pattern->elements[*idx]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3115 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3116 - /* Close parens for depth decrease */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3117 51 while (*prevDepth > elem->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3118 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3119 3 appendStringInfoChar(buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3120 3 (*prevDepth)--; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3121 3 *needSpace = true; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3122 - } 56aa37bRow pattern recognition patch (executor and commands).
3123 - 56aa37bRow pattern recognition patch (executor and commands).
3124 - /* Open parens up to ALT's depth */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3125 52 while (*prevDepth < elem->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3126 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3127 4 if (*needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3128 1 appendStringInfoChar(buf, ' '); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3129 4 appendStringInfoChar(buf, '('); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3130 4 (*prevDepth)++; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3131 4 *needSpace = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3132 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3133 - 56aa37bRow pattern recognition patch (executor and commands).
3134 - /* Register next alternation separator position */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3135 48 if (elem->next != RPR_ELEMIDX_INVALID) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3136 - { 56aa37bRow pattern recognition patch (executor and commands).
3137 48 RPRPatternElement *firstElem = &pattern->elements[elem->next]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3138 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3139 48 if (firstElem->jump != RPR_ELEMIDX_INVALID) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3140 48 *altSeps = lappend_int(*altSeps, firstElem->jump); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3141 48 } 56aa37bRow pattern recognition patch (executor and commands).
3142 48 if (elem->jump != RPR_ELEMIDX_INVALID) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3143 4 *altSeps = lappend_int(*altSeps, elem->jump); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3144 48 (*idx)++; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3145 48 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
deparse_rpr_var() lines 3151-3184
Modified Lines Coverage: 21/21 lines (100.0%)
LineHitsSourceCommit
3151 398 deparse_rpr_var(RPRPattern *pattern, int *idx, StringInfoData *buf, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3152 - RPRDepth *prevDepth, bool *needSpace, List **altSeps) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3153 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3154 398 RPRPatternElement *elem = &pattern->elements[*idx]; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3155 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3156 - /* Open parens for depth increase */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3157 442 while (*prevDepth < elem->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3158 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3159 44 if (*needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3160 8 appendStringInfoChar(buf, ' '); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3161 44 appendStringInfoChar(buf, '('); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3162 44 (*prevDepth)++; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3163 44 *needSpace = false; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3164 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3165 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3166 - /* Close parens for depth decrease */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3167 408 while (*prevDepth > elem->depth) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3168 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3169 10 appendStringInfoChar(buf, ')'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3170 10 (*prevDepth)--; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3171 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3172 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3173 398 if (*needSpace) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3174 157 appendStringInfoChar(buf, ' '); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3175 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3176 398 Assert(elem->varId < pattern->numVars); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3177 398 appendStringInfoString(buf, pattern->varNames[elem->varId]); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3178 398 append_rpr_quantifier(buf, elem); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3179 398 *needSpace = true; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3180 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3181 398 if (elem->jump != RPR_ELEMIDX_INVALID) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3182 55 *altSeps = lappend_int(*altSeps, elem->jump); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3183 398 (*idx)++; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3184 398 } 56aa37bRow pattern recognition patch (executor and commands).
show_window_def() lines 3190-3256
Modified Lines Coverage: 7/7 lines (100.0%)
LineHitsSourceCommit
3190 - show_window_def(WindowAggState *planstate, List *ancestors, ExplainState *es) -
3191 - { -
3192 - WindowAgg *wagg = (WindowAgg *) planstate->ss.ps.plan; -
3193 - StringInfoData wbuf; -
3194 - bool needspace = false; -
3195 - -
3196 - initStringInfo(&wbuf); -
3197 - appendStringInfo(&wbuf, "%s AS (", quote_identifier(wagg->winname)); -
3198 - -
3199 - /* The key columns refer to the tlist of the child plan */ -
3200 - ancestors = lcons(wagg, ancestors); -
3201 - if (wagg->partNumCols > 0) -
3202 - { -
3203 - appendStringInfoString(&wbuf, "PARTITION BY "); -
3204 - show_window_keys(&wbuf, outerPlanState(planstate), -
3205 - wagg->partNumCols, wagg->partColIdx, -
3206 - ancestors, es); -
3207 - needspace = true; -
3208 - } -
3209 - if (wagg->ordNumCols > 0) -
3210 - { -
3211 - if (needspace) -
3212 - appendStringInfoChar(&wbuf, ' '); -
3213 - appendStringInfoString(&wbuf, "ORDER BY "); -
3214 - show_window_keys(&wbuf, outerPlanState(planstate), -
3215 - wagg->ordNumCols, wagg->ordColIdx, -
3216 - ancestors, es); -
3217 - needspace = true; -
3218 - } -
3219 - ancestors = list_delete_first(ancestors); -
3220 - if (wagg->frameOptions & FRAMEOPTION_NONDEFAULT) -
3221 - { -
3222 - List *context; -
3223 - bool useprefix; -
3224 - char *framestr; -
3225 - -
3226 - /* Set up deparsing context for possible frame expressions */ -
3227 - context = set_deparse_context_plan(es->deparse_cxt, -
3228 - (Plan *) wagg, -
3229 - ancestors); -
3230 - useprefix = (es->rtable_size > 1 || es->verbose); -
3231 - framestr = get_window_frame_options_for_explain(wagg->frameOptions, -
3232 - wagg->startOffset, -
3233 - wagg->endOffset, -
3234 - context, -
3235 - useprefix); -
3236 - if (needspace) -
3237 - appendStringInfoChar(&wbuf, ' '); -
3238 - appendStringInfoString(&wbuf, framestr); -
3239 - pfree(framestr); -
3240 - } -
3241 - appendStringInfoChar(&wbuf, ')'); -
3242 - ExplainPropertyText("Window", wbuf.data, es); -
3243 - pfree(wbuf.data); -
3244 - 56aa37bRow pattern recognition patch (executor and commands).
3245 - /* Show Row Pattern Recognition pattern if present */ 56aa37bRow pattern recognition patch (executor and commands).
3246 165 if (wagg->rpPattern != NULL) 56aa37bRow pattern recognition patch (executor and commands).
3247 - { 56aa37bRow pattern recognition patch (executor and commands).
3248 165 char *patternStr = deparse_rpr_pattern(wagg->rpPattern); 56aa37bRow pattern recognition patch (executor and commands).
3249 - 56aa37bRow pattern recognition patch (executor and commands).
3250 165 if (patternStr != NULL) 56aa37bRow pattern recognition patch (executor and commands).
3251 - { 56aa37bRow pattern recognition patch (executor and commands).
3252 165 ExplainPropertyText("Pattern", patternStr, es); 56aa37bRow pattern recognition patch (executor and commands).
3253 165 pfree(patternStr); 56aa37bRow pattern recognition patch (executor and commands).
3254 165 } 56aa37bRow pattern recognition patch (executor and commands).
3255 165 } 56aa37bRow pattern recognition patch (executor and commands).
3256 - } -
show_windowagg_info() lines 3804-3825
Modified Lines Coverage: 4/4 lines (100.0%)
LineHitsSourceCommit
3804 - show_windowagg_info(WindowAggState *winstate, ExplainState *es) -
3805 - { -
3806 - char *maxStorageType; -
3807 - int64 maxSpaceUsed; -
3808 165 WindowAgg *wagg = (WindowAgg *) winstate->ss.ps.plan; 56aa37bRow pattern recognition patch (executor and commands).
3809 - -
3810 - Tuplestorestate *tupstore = winstate->buffer; -
3811 - -
3812 - /* -
3813 - * Nothing to show if ANALYZE option wasn't used or if execution didn't -
3814 - * get as far as creating the tuplestore. -
3815 - */ -
3816 - if (!es->analyze || tupstore == NULL) -
3817 - return; -
3818 - -
3819 - tuplestore_get_stats(tupstore, &maxStorageType, &maxSpaceUsed); -
3820 - show_storage_info(maxStorageType, maxSpaceUsed, es); -
3821 - 56aa37bRow pattern recognition patch (executor and commands).
3822 - /* Show NFA statistics for Row Pattern Recognition */ 56aa37bRow pattern recognition patch (executor and commands).
3823 84 if (wagg->rpPattern != NULL) 56aa37bRow pattern recognition patch (executor and commands).
3824 84 show_rpr_nfa_stats(winstate, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3825 165 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
show_rpr_nfa_stats() lines 3831-3975
Modified Lines Coverage: 95/95 lines (100.0%)
LineHitsSourceCommit
3831 84 show_rpr_nfa_stats(WindowAggState *winstate, ExplainState *es) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3832 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3833 84 if (es->format != EXPLAIN_FORMAT_TEXT) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3834 - { 56aa37bRow pattern recognition patch (executor and commands).
3835 - /* State and context counters */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3836 5 ExplainPropertyInteger("NFA States Peak", NULL, winstate->nfaStatesMax, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3837 5 ExplainPropertyInteger("NFA States Total", NULL, winstate->nfaStatesTotalCreated, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3838 5 ExplainPropertyInteger("NFA States Merged", NULL, winstate->nfaStatesMerged, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3839 5 ExplainPropertyInteger("NFA Contexts Peak", NULL, winstate->nfaContextsMax, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3840 5 ExplainPropertyInteger("NFA Contexts Total", NULL, winstate->nfaContextsTotalCreated, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3841 5 ExplainPropertyInteger("NFA Contexts Absorbed", NULL, winstate->nfaContextsAbsorbed, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3842 5 ExplainPropertyInteger("NFA Contexts Skipped", NULL, winstate->nfaContextsSkipped, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3843 5 ExplainPropertyInteger("NFA Contexts Pruned", NULL, winstate->nfaContextsPruned, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3844 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3845 - /* Match/mismatch counts and length statistics */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3846 5 ExplainPropertyInteger("NFA Matched", NULL, winstate->nfaMatchesSucceeded, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3847 5 ExplainPropertyInteger("NFA Mismatched", NULL, winstate->nfaMatchesFailed, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3848 5 if (winstate->nfaMatchesSucceeded > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3849 - { 56aa37bRow pattern recognition patch (executor and commands).
3850 5 ExplainPropertyInteger("NFA Match Length Min", NULL, winstate->nfaMatchLen.min, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3851 5 ExplainPropertyInteger("NFA Match Length Max", NULL, winstate->nfaMatchLen.max, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3852 5 ExplainPropertyFloat("NFA Match Length Avg", NULL, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3853 5 (double) winstate->nfaMatchLen.total / winstate->nfaMatchesSucceeded, 1, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3854 5 es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3855 5 } 56aa37bRow pattern recognition patch (executor and commands).
3856 5 if (winstate->nfaMatchesFailed > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3857 - { 56aa37bRow pattern recognition patch (executor and commands).
3858 2 ExplainPropertyInteger("NFA Mismatch Length Min", NULL, winstate->nfaFailLen.min, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3859 2 ExplainPropertyInteger("NFA Mismatch Length Max", NULL, winstate->nfaFailLen.max, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3860 2 ExplainPropertyFloat("NFA Mismatch Length Avg", NULL, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3861 2 (double) winstate->nfaFailLen.total / winstate->nfaMatchesFailed, 1, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3862 2 es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3863 2 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3864 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3865 - /* Absorbed/skipped context length statistics */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3866 5 if (winstate->nfaContextsAbsorbed > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3867 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3868 1 ExplainPropertyInteger("NFA Absorbed Length Min", NULL, winstate->nfaAbsorbedLen.min, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3869 1 ExplainPropertyInteger("NFA Absorbed Length Max", NULL, winstate->nfaAbsorbedLen.max, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3870 1 ExplainPropertyFloat("NFA Absorbed Length Avg", NULL, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3871 1 (double) winstate->nfaAbsorbedLen.total / winstate->nfaContextsAbsorbed, 1, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3872 1 es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3873 1 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3874 5 if (winstate->nfaContextsSkipped > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3875 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3876 5 ExplainPropertyInteger("NFA Skipped Length Min", NULL, winstate->nfaSkippedLen.min, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3877 5 ExplainPropertyInteger("NFA Skipped Length Max", NULL, winstate->nfaSkippedLen.max, es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3878 5 ExplainPropertyFloat("NFA Skipped Length Avg", NULL, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3879 5 (double) winstate->nfaSkippedLen.total / winstate->nfaContextsSkipped, 1, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3880 5 es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3881 5 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3882 5 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3883 - else 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3884 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3885 - /* State and context counters */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3886 79 ExplainIndentText(es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3887 158 appendStringInfo(es->str, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3888 - "NFA States: " INT64_FORMAT " peak, " INT64_FORMAT " total, " INT64_FORMAT " merged\n", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3889 79 winstate->nfaStatesMax, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3890 79 winstate->nfaStatesTotalCreated, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3891 79 winstate->nfaStatesMerged); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3892 79 ExplainIndentText(es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3893 158 appendStringInfo(es->str, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3894 - "NFA Contexts: " INT64_FORMAT " peak, " INT64_FORMAT " total, " INT64_FORMAT " pruned\n", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3895 79 winstate->nfaContextsMax, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3896 79 winstate->nfaContextsTotalCreated, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3897 79 winstate->nfaContextsPruned); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3898 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3899 - /* Match/mismatch counts with length min/max/avg */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3900 79 ExplainIndentText(es); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3901 79 appendStringInfo(es->str, "NFA: "); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3902 79 if (winstate->nfaMatchesSucceeded > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3903 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3904 74 double avgLen = (double) winstate->nfaMatchLen.total / winstate->nfaMatchesSucceeded; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3905 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3906 148 appendStringInfo(es->str, 56aa37bRow pattern recognition patch (executor and commands).
3907 - INT64_FORMAT " matched (len " INT64_FORMAT "/" INT64_FORMAT "/%.1f)", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3908 74 winstate->nfaMatchesSucceeded, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3909 74 winstate->nfaMatchLen.min, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3910 74 winstate->nfaMatchLen.max, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3911 74 avgLen); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3912 74 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3913 - else 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3914 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3915 5 appendStringInfo(es->str, "0 matched"); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3916 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3917 79 if (winstate->nfaMatchesFailed > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3918 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3919 23 double avgFail = (double) winstate->nfaFailLen.total / winstate->nfaMatchesFailed; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3920 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3921 46 appendStringInfo(es->str, 56aa37bRow pattern recognition patch (executor and commands).
3922 - ", " INT64_FORMAT " mismatched (len " INT64_FORMAT "/" INT64_FORMAT "/%.1f)", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3923 23 winstate->nfaMatchesFailed, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3924 23 winstate->nfaFailLen.min, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3925 23 winstate->nfaFailLen.max, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3926 23 avgFail); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3927 23 } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3928 - else 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3929 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3930 56 appendStringInfo(es->str, ", 0 mismatched"); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3931 - } 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3932 79 appendStringInfoChar(es->str, '\n'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3933 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3934 - /* Absorbed/skipped context length statistics */ 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3935 79 if (winstate->nfaContextsAbsorbed > 0 || winstate->nfaContextsSkipped > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3936 - { 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3937 68 ExplainIndentText(es); 56aa37bRow pattern recognition patch (executor and commands).
3938 68 appendStringInfo(es->str, "NFA: "); 56aa37bRow pattern recognition patch (executor and commands).
3939 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3940 68 if (winstate->nfaContextsAbsorbed > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3941 - { 56aa37bRow pattern recognition patch (executor and commands).
3942 30 double avgAbsorbed = (double) winstate->nfaAbsorbedLen.total / winstate->nfaContextsAbsorbed; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3943 - 56aa37bRow pattern recognition patch (executor and commands).
3944 60 appendStringInfo(es->str, 56aa37bRow pattern recognition patch (executor and commands).
3945 - INT64_FORMAT " absorbed (len " INT64_FORMAT "/" INT64_FORMAT "/%.1f)", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3946 30 winstate->nfaContextsAbsorbed, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3947 30 winstate->nfaAbsorbedLen.min, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3948 30 winstate->nfaAbsorbedLen.max, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3949 30 avgAbsorbed); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3950 30 } 56aa37bRow pattern recognition patch (executor and commands).
3951 - else 56aa37bRow pattern recognition patch (executor and commands).
3952 - { 56aa37bRow pattern recognition patch (executor and commands).
3953 38 appendStringInfo(es->str, "0 absorbed"); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3954 - } 56aa37bRow pattern recognition patch (executor and commands).
3955 - 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3956 68 if (winstate->nfaContextsSkipped > 0) 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3957 - { 56aa37bRow pattern recognition patch (executor and commands).
3958 64 double avgSkipped = (double) winstate->nfaSkippedLen.total / winstate->nfaContextsSkipped; 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3959 - 56aa37bRow pattern recognition patch (executor and commands).
3960 128 appendStringInfo(es->str, 56aa37bRow pattern recognition patch (executor and commands).
3961 - ", " INT64_FORMAT " skipped (len " INT64_FORMAT "/" INT64_FORMAT "/%.1f)", 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3962 64 winstate->nfaContextsSkipped, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3963 64 winstate->nfaSkippedLen.min, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3964 64 winstate->nfaSkippedLen.max, 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3965 64 avgSkipped); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3966 64 } 56aa37bRow pattern recognition patch (executor and commands).
3967 - else 56aa37bRow pattern recognition patch (executor and commands).
3968 - { 56aa37bRow pattern recognition patch (executor and commands).
3969 4 appendStringInfo(es->str, ", 0 skipped"); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3970 - } 56aa37bRow pattern recognition patch (executor and commands).
3971 - 56aa37bRow pattern recognition patch (executor and commands).
3972 68 appendStringInfoChar(es->str, '\n'); 6be1666Fix RPR pattern compilation crash and refactor EXPLAIN deparse
3973 68 } 56aa37bRow pattern recognition patch (executor and commands).
3974 - } 56aa37bRow pattern recognition patch (executor and commands).
3975 - } -