8000 Rename force_parallel_mode to debug_parallel_query · postgres/postgres@5352ca2 · GitHub
[go: up one dir, main page]

Skip to content
{"payload":{"commit":{"oid":"5352ca22e0012d48055453ca9992a9515d811291","url":"/postgres/postgres/commit/5352ca22e0012d48055453ca9992a9515d811291","authoredDate":"2023-02-15T21:21:59.000+13:00","committedDate":"2023-02-15T21:21:59.000+13:00","shortMessage":null,"shortMessageMarkdown":"\u003cdiv\u003eRename force_parallel_mode to debug_parallel_query\u003c/div\u003e","shortMessageMarkdownLink":null,"bodyMessageHtml":"force_parallel_mode is meant to be used to allow us to exercise the\nparallel query infrastructure to ensure that it's working as we expect.\nIt seems some users think this GUC is for forcing the query planner into\npicking a parallel plan regardless of the costs. A quick look at the\ndocumentation would have made them realize that they were wrong, but the\nGUC is likely too conveniently named which, evidently, seems to often\nresult in users expecting that it forces the planner into usefully\nparallelizing queries.\n\nHere we rename the GUC to something which casual users are less likely to\nmistakenly think is what they need to make their query run more quickly.\n\nFor now, the old name can still be used. We'll revisit if the old name\nmapping can be removed once the buildfarm configs are all updated.\n\nReviewed-by: John Naylor\nDiscussion: \u003ca href=\"https://postgr.es/m/CAApHDvrsOi92_uA7PEaHZMH-S4Xv+MGhQWA+GrP8b1kjpS1HjQ@mail.gmail.com\" rel=\"nofollow\"\u003ehttps://postgr.es/m/CAApHDvrsOi92_uA7PEaHZMH-S4Xv+MGhQWA+GrP8b1kjpS1HjQ@mail.gmail.com\u003c/a\u003e","authors":[{"login":"david-rowley","displayName":"David Rowley","avatarUrl":"https://avatars.githubusercontent.com/u/4554452?v=4","path":"/david-rowley","isGitHub":false}],"committerAttribution":false,"committer":{"login":"david-rowley","displayName":"David Rowley","avatarUrl":"https://avatars.githubusercontent.com/u/4554452?v=4","path":"/david-rowley","isGitHub":false},"parents":["8e0e0698f12bd77da38f6863ecdbe88a63ed49dc"],"globalRelayId":"C_kwDOAA4m0toAKDUzNTJjYTIyZTAwMTJkNDgwNTU0NTNjYTk5OTJhOTUxNWQ4MTEyOTE","sha1":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","sha2":"5352ca22e0012d48055453ca9992a9515d811291"},"currentUser":null,"repo":{"id":927442,"defaultBranch":"master","name":"postgres","ownerLogin":"postgres","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2010-09-21T11:35:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/177543?v=4","public":true,"private":false,"isOrgOwned":true},"diffEntryData":[{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":11090,"text":"@@ -11091,17 +11091,17 @@ dynamic_library_path = 'C:\\tools\\postgresql;H:\\my_project\\lib;$libdir'","html":"@@ -11091,17 +11091,17 @@ dynamic_library_path = \u0026#39;C:\\tools\\postgresql;H:\\my_project\\lib;$libdir\u0026#39;","displayNoNewLineWarning":false,"position":0,"left":11090,"right":11090},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11091,"text":" \u003c/listitem\u003e","html":" \u0026lt;/listitem\u0026gt;","displayNoNewLineWarning":false,"position":1,"left":11091,"right":11091},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11092,"text":" \u003c/varlistentry\u003e","html":" \u0026lt;/varlistentry\u0026gt;","displayNoNewLineWarning":false,"position":2,"left":11092,"right":11092},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11093,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":3,"left":11093,"right":11093},{"stylingDirective":null,"type":"DELETION","blobLineNumber":11094,"text":"- \u003cvarlistentry id=\"guc-force-parallel-mode\" xreflabel=\"force_parallel_mode\"\u003e","html":"- \u0026lt;varlistentry id=\u0026quot;guc-\u003cspan class=\"x x-first x-last\"\u003eforce\u003c/span\u003e-parallel-\u003cspan class=\"x x-first x-last\"\u003emode\u003c/span\u003e\u0026quot; xreflabel=\u0026quot;\u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e\u0026quot;\u0026gt;","displayNoNewLineWarning":false,"position":4,"left":11094,"right":11093},{"stylingDirective":null,"type":"DELETION","blobLineNumber":11095,"text":"- \u003cterm\u003e\u003cvarname\u003eforce_parallel_mode\u003c/varname\u003e (\u003ctype\u003eenum\u003c/type\u003e)","html":"- \u0026lt;term\u0026gt;\u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e\u0026lt;/varname\u0026gt; (\u0026lt;type\u0026gt;enum\u0026lt;/type\u0026gt;)","displayNoNewLineWarning":false,"position":5,"left":11095,"right":11093},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":11094,"text":"+ \u003cvarlistentry id=\"guc-debug-parallel-query\" xreflabel=\"debug_parallel_query\"\u003e","html":"+ \u0026lt;varlistentry id=\u0026quot;guc-\u003cspan class=\"x x-first x-last\"\u003edebug\u003c/span\u003e-parallel-\u003cspan class=\"x x-first x-last\"\u003equery\u003c/span\u003e\u0026quot; xreflabel=\u0026quot;\u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e\u0026quot;\u0026gt;","displayNoNewLineWarning":false,"position":6,"left":11095,"right":11094},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":11095,"text":"+ \u003cterm\u003e\u003cvarname\u003edebug_parallel_query\u003c/varname\u003e (\u003ctype\u003eenum\u003c/type\u003e)","html":"+ \u0026lt;term\u0026gt;\u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e\u0026lt;/varname\u0026gt; (\u0026lt;type\u0026gt;enum\u0026lt;/type\u0026gt;)","displayNoNewLineWarning":false,"position":7,"left":11095,"right":11095},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11096,"text":" \u003cindexterm\u003e","html":" \u0026lt;indexterm\u0026gt;","displayNoNewLineWarning":false,"position":8,"left":11096,"right":11096},{"stylingDirective":null,"type":"DELETION","blobLineNumber":11097,"text":"- \u003cprimary\u003e\u003cvarname\u003eforce_parallel_mode\u003c/varname\u003e configuration parameter\u003c/primary\u003e","html":"- \u0026lt;primary\u0026gt;\u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e\u0026lt;/varname\u0026gt; configuration parameter\u0026lt;/primary\u0026gt;","displayNoNewLineWarning":false,"position":9,"left":11097,"right":11096},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":11097,"text":"+ \u003cprimary\u003e\u003cvarname\u003edebug_parallel_query\u003c/varname\u003e configuration parameter\u003c/primary\u003e","html":"+ \u0026lt;primary\u0026gt;\u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e\u0026lt;/varname\u0026gt; configuration parameter\u0026lt;/primary\u0026gt;","displayNoNewLineWarning":false,"position":10,"left":11097,"right":11097},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11098,"text":" \u003c/indexterm\u003e","html":" \u0026lt;/indexterm\u0026gt;","displayNoNewLineWarning":false,"position":11,"left":11098,"right":11098},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11099,"text":" \u003c/term\u003e","html":" \u0026lt;/term\u0026gt;","displayNoNewLineWarning":false,"position":12,"left":11099,"right":11099},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11100,"text":" \u003clistitem\u003e","html":" \u0026lt;listitem\u0026gt;","displayNoNewLineWarning":false,"position":13,"left":11100,"right":11100},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11101,"text":" \u003cpara\u003e","html":" \u0026lt;para\u0026gt;","displayNoNewLineWarning":false,"position":14,"left":11101,"right":11101},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11102,"text":" Allows the use of parallel queries for testing purposes even in cases","html":" Allows the use of parallel queries for testing purposes even in cases","displayNoNewLineWarning":false,"position":15,"left":11102,"right":11102},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11103,"text":" where no performance benefit is expected.","html":" where no performance benefit is expected.","displayNoNewLineWarning":false,"position":16,"left":11103,"right":11103},{"stylingDirective":null,"type":"DELETION","blobLineNumber":11104,"text":"- The allowed values of \u003cvarname\u003eforce_parallel_mode\u003c/varname\u003e are","html":"- The allowed values of \u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e\u0026lt;/varname\u0026gt; are","displayNoNewLineWarning":false,"position":17,"left":11104,"right":11103},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":11104,"text":"+ The allowed values of \u003cvarname\u003edebug_parallel_query\u003c/varname\u003e are","html":"+ The allowed values of \u0026lt;varname\u0026gt;\u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e\u0026lt;/varname\u0026gt; are","displayNoNewLineWarning":false,"position":18,"left":11104,"right":11104},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11105,"text":" \u003cliteral\u003eoff\u003c/literal\u003e (use parallel mode only when it is expected to improve","html":" \u0026lt;literal\u0026gt;off\u0026lt;/literal\u0026gt; (use parallel mode only when it is expected to improve","displayNoNewLineWarning":false,"position":19,"left":11105,"right":11105},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11106,"text":" performance), \u003cliteral\u003eon\u003c/literal\u003e (force parallel query for all queries","html":" performance), \u0026lt;literal\u0026gt;on\u0026lt;/literal\u0026gt; (force parallel query for all queries","displayNoNewLineWarning":false,"position":20,"left":11106,"right":11106},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11107,"text":" for which it is thought to be safe), and \u003cliteral\u003eregress\u003c/literal\u003e (like","html":" for which it is thought to be safe), and \u0026lt;literal\u0026gt;regress\u0026lt;/literal\u0026gt; (like","displayNoNewLineWarning":false,"position":21,"left":11107,"right":11107}],"diffNumber":0,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":11852,"linesChanged":8,"newTreeEntry":{"lineCount":11852,"path":"doc/src/sgml/config.sgml","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"doc/src/sgml/config.sgml","mode":100644},"linesAdded":4,"linesDeleted":4,"path":"doc/src/sgml/config.sgml","pathDigest":"0553fde8fa0de14527cb5c14b02adb28bdedf3e458f7347b51fb11e1dade2fa7","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":369,"text":"@@ -370,7 +370,7 @@ make check LANG=C ENCODING=EUC_JP","html":"@@ -370,7 +370,7 @@ make check LANG=C ENCODING=EUC_JP","displayNoNewLineWarning":false,"position":0,"left":369,"right":369},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":370,"text":" set in the \u003cvarname\u003ePGOPTIONS\u003c/varname\u003e environment variable (for settings","html":" set in the \u0026lt;varname\u0026gt;PGOPTIONS\u0026lt;/varname\u0026gt; environment variable (for settings","displayNoNewLineWarning":false,"position":1,"left":370,"right":370},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":371,"text":" that allow this):","html":" that allow this):","displayNoNewLineWarning":false,"position":2,"left":371,"right":371},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":372,"text":" \u003cscreen\u003e","html":" \u0026lt;screen\u0026gt;","displayNoNewLineWarning":false,"position":3,"left":372,"right":372},{"stylingDirective":null,"type":"DELETION","blobLineNumber":373,"text":"-make check PGOPTIONS=\"-c force_parallel_mode=regress -c work_mem=50MB\"","html":"-make check PGOPTIONS=\u0026quot;-c \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e=regress -c work_mem=50MB\u0026quot;","displayNoNewLineWarning":false,"position":4,"left":373,"right":372},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":373,"text":"+make check PGOPTIONS=\"-c debug_parallel_query=regress -c work_mem=50MB\"","html":"+make check PGOPTIONS=\u0026quot;-c \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e=regress -c work_mem=50MB\u0026quot;","displayNoNewLineWarning":false,"position":5,"left":373,"right":373},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":374,"text":" \u003c/screen\u003e","html":" \u0026lt;/screen\u0026gt;","displayNoNewLineWarning":false,"position":6,"left":374,"right":374},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":375,"text":" When running against a temporary installation, custom settings can also be","html":" When running against a temporary installation, custom settings can also be","displayNoNewLineWarning":false,"position":7,"left":375,"right":375},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":376,"text":" set by supplying a pre-written \u003cfilename\u003epostgresql.conf\u003c/filename\u003e:","html":" set by supplying a pre-written \u0026lt;filename\u0026gt;postgresql.conf\u0026lt;/filename\u0026gt;:","displayNoNewLineWarning":false,"position":8,"left":376,"right":376}],"diffNumber":1,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":877,"linesChanged":2,"newTreeEntry":{"lineCount":877,"path":"doc/src/sgml/regress.sgml","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"doc/src/sgml/regress.sgml","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"doc/src/sgml/regress.sgml","pathDigest":"5d44a8c5c4d899266db2d41ded8726c0869a7388fce9c5fedd991e6c7ed9cf40","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":1151,"text":"@@ -1152,11 +1152,11 @@ HandleParallelMessage(ParallelContext *pcxt, int i, StringInfo msg)","html":"@@ -1152,11 +1152,11 @@ HandleParallelMessage(ParallelContext *pcxt, int i, StringInfo msg)","displayNoNewLineWarning":false,"position":0,"left":1151,"right":1151},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1152,"text":" \t\t\t\t * If desired, add a context line to show that this is a","html":" \u003cspan class=pl-c\u003e\t\t\t\t * If desired, add a context line to show that this is a\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":1152,"right":1152},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1153,"text":" \t\t\t\t * message propagated from a parallel worker. Otherwise, it","html":" \u003cspan class=pl-c\u003e\t\t\t\t * message propagated from a parallel worker. Otherwise, it\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":1153,"right":1153},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1154,"text":" \t\t\t\t * can sometimes be confusing to understand what actually","html":" \u003cspan class=pl-c\u003e\t\t\t\t * can sometimes be confusing to understand what actually\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":1154,"right":1154},{"stylingDirective":null,"type":"DELETION","blobLineNumber":1155,"text":"-\t\t\t\t * happened. (We don't do this in FORCE_PARALLEL_REGRESS mode","html":"-\u003cspan class=\"pl-c\"\u003e\t\t\t\t * happened. (We don't do this in \u003cspan class=\"x x-first x-last\"\u003eFORCE_PARALLEL_REGRESS\u003c/span\u003e mode\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":1155,"right":1154},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":1155,"text":"+\t\t\t\t * happened. (We don't do this in DEBUG_PARALLEL_REGRESS mode","html":"+\u003cspan class=\"pl-c\"\u003e\t\t\t\t * happened. (We don't do this in \u003cspan class=\"x x-first x-last\"\u003eDEBUG_PARALLEL_REGRESS\u003c/span\u003e mode\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":1155,"right":1155},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1156,"text":" \t\t\t\t * because it causes test-result instability depending on","html":" \u003cspan class=pl-c\u003e\t\t\t\t * because it causes test-result instability depending on\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":1156,"right":1156},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1157,"text":" \t\t\t\t * whether a parallel worker is actually used or not.)","html":" \u003cspan class=pl-c\u003e\t\t\t\t * whether a parallel worker is actually used or not.)\u003c/span\u003e","displayNoNewLineWarning":false,"position":7,"left":1157,"right":1157},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1158,"text":" \t\t\t\t */","html":" \u003cspan class=pl-c\u003e\t\t\t\t */\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":1158,"right":1158},{"stylingDirective":null,"type":"DELETION","blobLineNumber":1159,"text":"-\t\t\t\tif (force_parallel_mode != FORCE_PARALLEL_REGRESS)","html":"-\t\t\t\t\u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_REGRESS\u003c/span\u003e)","displayNoNewLineWarning":false,"position":9,"left":1159,"right":1158},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":1159,"text":"+\t\t\t\tif (debug_parallel_query != DEBUG_PARALLEL_REGRESS)","html":"+\t\t\t\t\u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_REGRESS\u003c/span\u003e)","displayNoNewLineWarning":false,"position":10,"left":1159,"right":1159},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1160,"text":" \t\t\t\t{","html":" \t\t\t\t{","displayNoNewLineWarning":false,"position":11,"left":1160,"right":1160},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1161,"text":" \t\t\t\t\tif (edata.context)","html":" \t\t\t\t\t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-s1\u003eedata\u003c/span\u003e.\u003cspan class=pl-c1\u003econtext\u003c/span\u003e)","displayNoNewLineWarning":false,"position":12,"left":1161,"right":1161},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1162,"text":" \t\t\t\t\t\tedata.context = psprintf(\"%s\\n%s\", edata.context,","html":" \t\t\t\t\t\t\u003cspan class=pl-s1\u003eedata\u003c/span\u003e.\u003cspan class=pl-c1\u003econtext\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-en\u003epsprintf\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;%s\\n%s\u0026quot;\u003c/span\u003e, \u003cspan class=pl-s1\u003eedata\u003c/span\u003e.\u003cspan class=pl-c1\u003econtext\u003c/span\u003e,","displayNoNewLineWarning":false,"position":13,"left":1162,"right":1162}],"diffNumber":2,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":1622,"linesChanged":4,"newTreeEntry":{"lineCount":1622,"path":"src/backend/access/transam/parallel.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/access/transam/parallel.c","mode":100644},"linesAdded":2,"linesDeleted":2,"path":"src/backend/access/transam/parallel.c","pathDigest":"36390801be3d806c14819ed39de6933e6ffe1f4ebcd984e64f9a29cd00b72544","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":755,"text":"@@ -756,8 +756,8 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc)","html":"@@ -756,8 +756,8 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc)","displayNoNewLineWarning":false,"position":0,"left":755,"right":755},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":756,"text":" \t/*","html":" \t\u003cspan class=pl-c\u003e/*\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":756,"right":756},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":757,"text":" \t * Sometimes we mark a Gather node as \"invisible\", which means that it's","html":" \u003cspan class=pl-c\u003e\t * Sometimes we mark a Gather node as \u0026quot;invisible\u0026quot;, which means that it\u0026#39;s\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":757,"right":757},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":758,"text":" \t * not to be displayed in EXPLAIN output. The purpose of this is to allow","html":" \u003cspan class=pl-c\u003e\t * not to be displayed in EXPLAIN output. The purpose of this is to allow\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":758,"right":758},{"stylingDirective":null,"type":"DELETION","blobLineNumber":759,"text":"-\t * running regression tests with force_parallel_mode=regress to get the","html":"-\u003cspan class=\"pl-c\"\u003e\t * running regression tests with \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e=regress to get the\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":759,"right":758},{"stylingDirective":null,"type":"DELETION","blobLineNumber":760,"text":"-\t * same results as running the same tests with force_parallel_mode=off.","html":"-\u003cspan class=\"pl-c\"\u003e\t * same results as running the same tests with \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e=off.\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":760,"right":758},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":759,"text":"+\t * running regression tests with debug_parallel_query=regress to get the","html":"+\u003cspan class=\"pl-c\"\u003e\t * running regression tests with \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e=regress to get the\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":760,"right":759},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":760,"text":"+\t * same results as running the same tests with debug_parallel_query=off.","html":"+\u003cspan class=\"pl-c\"\u003e\t * same results as running the same tests with \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e=off.\u003c/span\u003e","displayNoNewLineWarning":false,"position":7,"left":760,"right":760},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":761,"text":" \t * Such marking is currently only supported on a Gather at the top of the","html":" \u003cspan class=pl-c\u003e\t * Such marking is currently only supported on a Gather at the top of the\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":761,"right":761},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":762,"text":" \t * plan. We skip that node, and we must also hide per-worker detail data","html":" \u003cspan class=pl-c\u003e\t * plan. We skip that node, and we must also hide per-worker detail data\u003c/span\u003e","displayNoNewLineWarning":false,"position":9,"left":762,"right":762},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":763,"text":" \t * further down in the plan tree.","html":" \u003cspan class=pl-c\u003e\t * further down in the plan tree.\u003c/span\u003e","displayNoNewLineWarning":false,"position":10,"left":763,"right":763}],"diffNumber":3,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":5040,"linesChanged":4,"newTreeEntry":{"lineCount":5040,"path":"src/backend/commands/explain.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/commands/explain.c","mode":100644},"linesAdded":2,"linesDeleted":2,"path":"src/backend/commands/explain.c","pathDigest":"5f24db464bbd016410e96159d19e5eddaaeaf016905ba4efc8fbac982a95574e","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":113,"text":"@@ -114,12 +114,12 @@ query_planner(PlannerInfo *root,","html":"@@ -114,12 +114,12 @@ query_planner(PlannerInfo *root,","displayNoNewLineWarning":false,"position":0,"left":113,"right":113},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":114,"text":" \t\t\t\t * Anything parallel-restricted in the query tlist will be","html":" \u003cspan class=pl-c\u003e\t\t\t\t * Anything parallel-restricted in the query tlist will be\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":114,"right":114},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":115,"text":" \t\t\t\t * dealt with later.) This is normally pretty silly, because","html":" \u003cspan class=pl-c\u003e\t\t\t\t * dealt with later.) This is normally pretty silly, because\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":115,"right":115},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":116,"text":" \t\t\t\t * a Result-only plan would never be interesting to","html":" \u003cspan class=pl-c\u003e\t\t\t\t * a Result-only plan would never be interesting to\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":116,"right":116},{"stylingDirective":null,"type":"DELETION","blobLineNumber":117,"text":"-\t\t\t\t * parallelize. However, if force_parallel_mode is on, then","html":"-\u003cspan class=\"pl-c\"\u003e\t\t\t\t * parallelize. However, if \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e is on, then\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":117,"right":116},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":117,"text":"+\t\t\t\t * parallelize. However, if debug_parallel_query is on, then","html":"+\u003cspan class=\"pl-c\"\u003e\t\t\t\t * parallelize. However, if \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e is on, then\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":117,"right":117},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":118,"text":" \t\t\t\t * we want to execute the Result in a parallel worker if","html":" \u003cspan class=pl-c\u003e\t\t\t\t * we want to execute the Result in a parallel worker if\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":118,"right":118},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":119,"text":" \t\t\t\t * possible, so we must do this.","html":" \u003cspan class=pl-c\u003e\t\t\t\t * possible, so we must do this.\u003c/span\u003e","displayNoNewLineWarning":false,"position":7,"left":119,"right":119},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":120,"text":" \t\t\t\t */","html":" \u003cspan class=pl-c\u003e\t\t\t\t */\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":120,"right":120},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":121,"text":" \t\t\t\tif (root-\u003eglob-\u003eparallelModeOK \u0026\u0026","html":" \t\t\t\t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-s1\u003eroot\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003eglob\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003eparallelModeOK\u003c/span\u003e \u003cspan class=pl-c1\u003e\u0026amp;\u0026amp;\u003c/span\u003e","displayNoNewLineWarning":false,"position":9,"left":121,"right":121},{"stylingDirective":null,"type":"DELETION","blobLineNumber":122,"text":"-\t\t\t\t\tforce_parallel_mode != FORCE_PARALLEL_OFF)","html":"-\t\t\t\t\t\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e)","displayNoNewLineWarning":false,"position":10,"left":122,"right":121},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":122,"text":"+\t\t\t\t\tdebug_parallel_query != DEBUG_PARALLEL_OFF)","html":"+\t\t\t\t\t\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e)","displayNoNewLineWarning":false,"position":11,"left":122,"right":122},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":123,"text":" \t\t\t\t\tfinal_rel-\u003econsider_parallel =","html":" \t\t\t\t\t\u003cspan class=pl-s1\u003efinal_rel\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003econsider_parallel\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e","displayNoNewLineWarning":false,"position":12,"left":123,"right":123},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":124,"text":" \t\t\t\t\t\tis_parallel_safe(root, parse-\u003ejointree-\u003equals);","html":" \t\t\t\t\t\t\u003cspan class=pl-en\u003eis_parallel_safe\u003c/span\u003e(\u003cspan class=pl-s1\u003eroot\u003c/span\u003e, \u003cspan class=pl-s1\u003eparse\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003ejointree\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003equals\u003c/span\u003e);","displayNoNewLineWarning":false,"position":13,"left":124,"right":124},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":125,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":14,"left":125,"right":125}],"diffNumber":4,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":286,"linesChanged":4,"newTreeEntry":{"lineCount":286,"path":"src/backend/optimizer/plan/planmain.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/optimizer/plan/planmain.c","mode":100644},"linesAdded":2,"linesDeleted":2,"path":"src/backend/optimizer/plan/planmain.c","pathDigest":"c5a068ff48b9a5ef8e69eb30333d223479b794bc6771f8953795815bb688d5bd","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":69,"text":"@@ -70,7 +70,7 @@","html":"@@ -70,7 +70,7 @@","displayNoNewLineWarning":false,"position":0,"left":69,"right":69},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":70,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":1,"left":70,"right":70},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":71,"text":" /* GUC parameters */","html":" \u003cspan class=pl-c\u003e/* GUC parameters */\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":71,"right":71},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":72,"text":" double\t\tcursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION;","html":" \u003cspan class=pl-smi\u003edouble\u003c/span\u003e\t\t\u003cspan class=pl-s1\u003ecursor_tuple_fraction\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003eDE 10000 FAULT_CURSOR_TUPLE_FRACTION\u003c/span\u003e;","displayNoNewLineWarning":false,"position":3,"left":72,"right":72},{"stylingDirective":null,"type":"DELETION","blobLineNumber":73,"text":"-int\t\t\tforce_parallel_mode = FORCE_PARALLEL_OFF;","html":"-\u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\t\t\t\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e;","displayNoNewLineWarning":false,"position":4,"left":73,"right":72},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":73,"text":"+int\t\t\tdebug_parallel_query = DEBUG_PARALLEL_OFF;","html":"+\u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\t\t\t\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e;","displayNoNewLineWarning":false,"position":5,"left":73,"right":73},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":74,"text":" bool\t\tparallel_leader_participation = true;","html":" \u003cspan class=pl-smi\u003ebool\u003c/span\u003e\t\t\u003cspan class=pl-s1\u003eparallel_leader_participation\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e true;","displayNoNewLineWarning":false,"position":6,"left":74,"right":74},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":75,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":7,"left":75,"right":75},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":76,"text":" /* Hook for plugins to get control in planner() */","html":" \u003cspan class=pl-c\u003e/* Hook for plugins to get control in planner() */\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":76,"right":76},{"stylingDirective":null,"type":"HUNK","blobLineNumber":363,"text":"@@ -364,20 +364,20 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","html":"@@ -364,20 +364,20 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","displayNoNewLineWarning":false,"position":9,"left":363,"right":363},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":364,"text":" \t * true during plan creation if a Gather or Gather Merge plan is actually","html":" \u003cspan class=pl-c\u003e\t * true during plan creation if a Gather or Gather Merge plan is actually\u003c/span\u003e","displayNoNewLineWarning":false,"position":10,"left":364,"right":364},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":365,"text":" \t * created (cf. create_gather_plan, create_gather_merge_plan).","html":" \u003cspan class=pl-c\u003e\t * created (cf. create_gather_plan, create_gather_merge_plan).\u003c/span\u003e","displayNoNewLineWarning":false,"position":11,"left":365,"right":365},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":366,"text":" \t *","html":" \u003cspan class=pl-c\u003e\t *\u003c/span\u003e","displayNoNewLineWarning":false,"position":12,"left":366,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":367,"text":"-\t * However, if force_parallel_mode = on or force_parallel_mode = regress,","html":"-\u003cspan class=\"pl-c\"\u003e\t * However, if \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = on or \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode = regress,\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":13,"left":367,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":368,"text":"-\t * then we impose parallel mode whenever it's safe to do so, even if the","html":"-\u003cspan class=\"pl-c\"\u003e\t * then we impose parallel mode whenever it's safe to do so, even\u003cspan class=\"x x-first x-last\"\u003e if the\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":14,"left":368,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":369,"text":"-\t * final plan doesn't use parallelism. It's not safe to do so if the","html":"-\u003cspan class=\"pl-c\"\u003e\t * final plan doesn't use parallelism. It's not safe to do so if\u003cspan class=\"x x-first x-last\"\u003e the\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":15,"left":369,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":370,"text":"-\t * query contains anything parallel-unsafe; parallelModeOK will be false","html":"-\u003cspan class=\"pl-c\"\u003e\t * query contains anything parallel-unsafe; parallelModeOK will be\u003cspan class=\"x x-first x-last\"\u003e false\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":16,"left":370,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":371,"text":"-\t * in that case. Note that parallelModeOK can't change after this point.","html":"-\u003cspan class=\"pl-c\"\u003e\t * in that case. Note that parallelModeOK can't change after this\u003cspan class=\"x x-first x-last\"\u003e point.\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":17,"left":371,"right":366},{"stylingDirective":null,"type":"DELETION","blobLineNumber":372,"text":"-\t * Otherwise, everything in the query is either parallel-safe or","html":"-\u003cspan class=\"pl-c\"\u003e\t * Otherwise, everything in the query is either parallel-safe or\u003c/span\u003e","displayNoNewLineWarning":false,"position":18,"left":372,"right":366},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":367,"text":"+\t * However, if debug_parallel_query = on or debug_parallel_query =","html":"+\u003cspan class=\"pl-c\"\u003e\t * However, if \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = on or \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query =\u003c/span\u003e\u003c/span\u003e","displayNoNewLineWarning":false,"position":19,"left":372,"right":367},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":368,"text":"+\t * regress, then we impose parallel mode whenever it's safe to do so, even","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003eregress, \u003c/span\u003ethen we impose parallel mode whenever it's safe to do so, even\u003c/span\u003e","displayNoNewLineWarning":false,"position":20,"left":372,"right":368},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":369,"text":"+\t * if the final plan doesn't use parallelism. It's not safe to do so if","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003eif the \u003c/span\u003efinal plan doesn't use parallelism. It's not safe to do so if\u003c/span\u003e","displayNoNewLineWarning":false,"position":21,"left":372,"right":369},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":370,"text":"+\t * the query contains anything parallel-unsafe; parallelModeOK will be","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003ethe \u003c/span\u003equery contains anything parallel-unsafe; parallelModeOK will be\u003c/span\u003e","displayNoNewLineWarning":false,"position":22,"left":372,"right":370},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":371,"text":"+\t * false in that case. Note that parallelModeOK can't change after this","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003efalse \u003c/span\u003ein that case. Note that parallelModeOK can't change after this\u003c/span\u003e","displayNoNewLineWarning":false,"position":23,"left":372,"right":371},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":372,"text":"+\t * point. Otherwise, everything in the query is either parallel-safe or","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003epoint. \u003c/span\u003eOtherwise, everything in the query is either parallel-safe or\u003c/span\u003e","displayNoNewLineWarning":false,"position":24,"left":372,"right":372},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":373,"text":" \t * parallel-restricted, and in either case it should be OK to impose","html":" \u003cspan class=pl-c\u003e\t * parallel-restricted, and in either case it should be OK to impose\u003c/span\u003e","displayNoNewLineWarning":false,"position":25,"left":373,"right":373},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":374,"text":" \t * parallel-mode restrictions. If that ends up breaking something, then","html":" \u003cspan class=pl-c\u003e\t * parallel-mode restrictions. If that ends up breaking something, then\u003c/span\u003e","displayNoNewLineWarning":false,"position":26,"left":374,"right":374},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":375,"text":" \t * either some function the user included in the query is incorrectly","html":" \u003cspan class=pl-c\u003e\t * either some function the user included in the query is incorrectly\u003c/span\u003e","displayNoNewLineWarning":false,"position":27,"left":375,"right":375},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":376,"text":" \t * labeled as parallel-safe or parallel-restricted when in reality it's","html":" \u003cspan class=pl-c\u003e\t * labeled as parallel-safe or parallel-restricted when in reality it\u0026#39;s\u003c/span\u003e","displayNoNewLineWarning":false,"position":28,"left":376,"right":376},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":377,"text":" \t * parallel-unsafe, or else the query planner itself has a bug.","html":" \u003cspan class=pl-c\u003e\t * parallel-unsafe, or else the query planner itself has a bug.\u003c/span\u003e","displayNoNewLineWarning":false,"position":29,"left":377,"right":377},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":378,"text":" \t */","html":" \u003cspan class=pl-c\u003e\t */\u003c/span\u003e","displayNoNewLineWarning":false,"position":30,"left":378,"right":378},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":379,"text":" \tglob-\u003eparallelModeNeeded = glob-\u003eparallelModeOK \u0026\u0026","html":" \t\u003cspan class=pl-s1\u003eglob\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003eparallelModeNeeded\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s1\u003eglob\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003eparallelModeOK\u003c/span\u003e \u003cspan class=pl-c1\u003e\u0026amp;\u0026amp;\u003c/span\u003e","displayNoNewLineWarning":false,"position":31,"left":379,"right":379},{"stylingDirective":null,"type":"DELETION","blobLineNumber":380,"text":"-\t\t(force_parallel_mode != FORCE_PARALLEL_OFF);","html":"-\t\t(\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e);","displayNoNewLineWarning":false,"position":32,"left":380,"right":379},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":380,"text":"+\t\t(debug_parallel_query != DEBUG_PARALLEL_OFF);","html":"+\t\t(\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e);","displayNoNewLineWarning":false,"position":33,"left":380,"right":380},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":381,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":34,"left":381,"right":381},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":382,"text":" \t/* Determine what fraction of the plan is likely to be scanned */","html":" \t\u003cspan class=pl-c\u003e/* Determine what fraction of the plan is likely to be scanned */\u003c/span\u003e","displayNoNewLineWarning":false,"position":35,"left":382,"right":382},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":383,"text":" \tif (cursorOptions \u0026 CURSOR_OPT_FAST_PLAN)","html":" \t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-s1\u003ecursorOptions\u003c/span\u003e \u003cspan class=pl-c1\u003e\u0026amp;\u003c/span\u003e \u003cspan class=pl-c1\u003eCURSOR_OPT_FAST_PLAN\u003c/span\u003e)","displayNoNewLineWarning":false,"position":36,"left":383,"right":383},{"stylingDirective":null,"type":"HUNK","blobLineNumber":430,"text":"@@ -431,7 +431,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","html":"@@ -431,7 +431,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","displayNoNewLineWarning":false,"position":37,"left":430,"right":430},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":431,"text":" \t * Optionally add a Gather node for testing purposes, provided this is","html":" \u003cspan class=pl-c\u003e\t * Optionally add a Gather node for testing purposes, provided this is\u003c/span\u003e","displayNoNewLineWarning":false,"position":38,"left":431,"right":431},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":432,"text":" \t * actually a safe thing to do.","html":" \u003cspan class=pl-c\u003e\t * actually a safe thing to do.\u003c/span\u003e","displayNoNewLineWarning":false,"position":39,"left":432,"right":432},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":433,"text":" \t */","html":" \u003cspan class=pl-c\u003e\t */\u003c/span\u003e","displayNoNewLineWarning":false,"position":40,"left":433,"right":433},{"stylingDirective":null,"type":"DELETION","blobLineNumber":434,"text":"-\tif (force_parallel_mode != FORCE_PARALLEL_OFF \u0026\u0026 top_plan-\u003eparallel_safe)","html":"-\t\u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003etop_plan\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eparallel_safe\u003c/span\u003e)","displayNoNewLineWarning":false,"position":41,"left":434,"right":433},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":434,"text":"+\tif (debug_parallel_query != DEBUG_PARALLEL_OFF \u0026\u0026 top_plan-\u003eparallel_safe)","html":"+\t\u003cspan class=\"pl-k\"\u003eif\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e!=\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e\u0026amp;\u0026amp;\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003etop_plan\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003eparallel_safe\u003c/span\u003e)","displayNoNewLineWarning":false,"position":42,"left":434,"right":434},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":435,"text":" \t{","html":" \t{","displayNoNewLineWarning":false,"position":43,"left":435,"right":435},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":436,"text":" \t\tGather\t *gather = makeNode(Gather);","html":" \t\t\u003cspan class=pl-smi\u003eGather\u003c/span\u003e\t \u003cspan class=pl-c1\u003e*\u003c/span\u003e\u003cspan class=pl-s1\u003egather\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-en\u003emakeNode\u003c/span\u003e(\u003cspan class=pl-s1\u003eGather\u003c/span\u003e);","displayNoNewLineWarning":false,"position":44,"left":436,"right":436},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":437,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":45,"left":437,"right":437},{"stylingDirective":null,"type":"HUNK","blobLineNumber":448,"text":"@@ -449,7 +449,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","html":"@@ -449,7 +449,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,","displayNoNewLineWarning":false,"position":46,"left":448,"right":448},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":449,"text":" \t\tgather-\u003eplan.righttree = NULL;","html":" \t\t\u003cspan class=pl-s1\u003egather\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003eplan\u003c/span\u003e.\u003cspan class=pl-c1\u003erighttree\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003eNULL\u003c/span\u003e;","displayNoNewLineWarning":false,"position":47,"left":449,"right":449},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":450,"text":" \t\tgather-\u003enum_workers = 1;","html":" \t\t\u003cspan class=pl-s1\u003egather\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003enum_workers\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e1\u003c/span\u003e;","displayNoNewLineWarning":false,"position":48,"left":450,"right":450},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":451,"text":" \t\tgather-\u003esingle_copy = true;","html":" \t\t\u003cspan class=pl-s1\u003egather\u003c/span\u003e\u003cspan class=pl-c1\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=pl-c1\u003esingle_copy\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e true;","displayNoNewLineWarning":false,"position":49,"left":451,"right":451},{"stylingDirective":null,"type":"DELETION","blobLineNumber":452,"text":"-\t\tgather-\u003einvisible = (force_parallel_mode == FORCE_PARALLEL_REGRESS);","html":"-\t\t\u003cspan class=\"pl-s1\"\u003egather\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003einvisible\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e==\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_REGRESS\u003c/span\u003e);","displayNoNewLineWarning":false,"position":50,"left":452,"right":451},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":452,"text":"+\t\tgather-\u003einvisible = (debug_parallel_query == DEBUG_PARALLEL_REGRESS);","html":"+\t\t\u003cspan class=\"pl-s1\"\u003egather\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003e-\u0026gt;\u003c/span\u003e\u003cspan class=\"pl-c1\"\u003einvisible\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e (\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e==\u003c/span\u003e \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_REGRESS\u003c/span\u003e);","displayNoNewLineWarning":false,"position":51,"left":452,"right":452},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":453,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":52,"left":453,"right":453},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":454,"text":" \t\t/*","html":" \t\t\u003cspan class=pl-c\u003e/*\u003c/span\u003e","displayNoNewLineWarning":false,"position":53,"left":454,"right":454},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":455,"text":" \t\t * Since this Gather has no parallel-aware descendants to signal to,","html":" \u003cspan class=pl-c\u003e\t\t * Since this Gather has no parallel-aware descendants to signal to,\u003c/span\u003e","displayNoNewLineWarning":false,"position":54,"left":455,"right":455}],"diffNumber":5,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":7906,"linesChanged":20,"newTreeEntry":{"lineCount":7906,"path":"src/backend/optimizer/plan/planner.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/optimizer/plan/planner.c","mode":100644},"linesAdded":10,"linesDeleted":10,"path":"src/backend/optimizer/plan/planner.c","pathDigest":"c6e13617216e8b159a017b78dea5eae9966e17e98e0ba6e818a352ecac5bbcf7","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":185,"text":"@@ -186,6 +186,7 @@ static const unit_conversion time_unit_conversion_table[] =","html":"@@ -186,6 +186,7 @@ static const unit_conversion time_unit_conversion_table[] =","displayNoNewLineWarning":false,"position":0,"left":185,"right":185},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":186,"text":" static const char *const map_old_guc_names[] = {","html":" \u003cspan class=pl-k\u003estatic\u003c/span\u003e \u003cspan class=pl-k\u003econst\u003c/span\u003e \u003cspan class=pl-smi\u003echar\u003c/span\u003e \u003cspan class=pl-c1\u003e*\u003c/span\u003e\u003cspan class=pl-k\u003econst\u003c/span\u003e \u003cspan class=pl-s1\u003emap_old_guc_names\u003c/span\u003e[] \u003cspan class=pl-c1\u003e=\u003c/span\u003e {","displayNoNewLineWarning":false,"position":1,"left":186,"right":186},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":187,"text":" \t\"sort_mem\", \"work_mem\",","html":" \t\u003cspan class=pl-s\u003e\u0026quot;sort_mem\u0026quot;\u003c/span\u003e, \u003cspan class=pl-s\u003e\u0026quot;work_mem\u0026quot;\u003c/span\u003e,","displayNoNewLineWarning":false,"position":2,"left":187,"right":187},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":188,"text":" \t\"vacuum_mem\", \"maintenance_work_mem\",","html":" \t\u003cspan class=pl-s\u003e\u0026quot;vacuum_mem\u0026quot;\u003c/span\u003e, \u003cspan class=pl-s\u003e\u0026quot;maintenance_work_mem\u0026quot;\u003c/span\u003e,","displayNoNewLineWarning":false,"position":3,"left":188,"right":188},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":189,"text":"+\t\"force_parallel_mode\", \"debug_parallel_query\",","html":"+\t\u003cspan class=pl-s\u003e\u0026quot;force_parallel_mode\u0026quot;\u003c/span\u003e, \u003cspan class=pl-s\u003e\u0026quot;debug_parallel_query\u0026quot;\u003c/span\u003e,","displayNoNewLineWarning":false,"position":4,"left":188,"right":189},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":190,"text":" \tNULL","html":" \t\u003cspan class=pl-c1\u003eNULL\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":189,"right":190},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":191,"text":" };","html":" };","displayNoNewLineWarning":false,"position":6,"left":190,"right":191},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":192,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":7,"left":191,"right":192}],"diffNumber":6,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":6896,"linesChanged":1,"newTreeEntry":{"lineCount":6896,"path":"src/backend/utils/misc/guc.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/utils/misc/guc.c","mode":100644},"linesAdded":1,"linesDeleted":0,"path":"src/backend/utils/misc/guc.c","pathDigest":"7b498e2a4e81bf94674362e79d50bfcc8836d61ddb6b70c6d7e6cb3b9d56d806","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":359,"text":"@@ -360,16 +360,16 @@ static const struct config_enum_entry recovery_prefetch_options[] = {","html":"@@ -360,16 +360,16 @@ static const struct config_enum_entry recovery_prefetch_options[] = {","displayNoNewLineWarning":false,"position":0,"left":359,"right":359},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":360,"text":" \t{NULL, 0, false}","html":" \t{\u003cspan class=pl-c1\u003eNULL\u003c/span\u003e, \u003cspan class=pl-c1\u003e0\u003c/span\u003e, false}","displayNoNewLineWarning":false,"position":1,"left":360,"right":360},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":361,"text":" };","html":" };","displayNoNewLineWarning":false,"position":2,"left":361,"right":361},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":362,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":3,"left":362,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":363,"text":"-static const struct config_enum_entry force_parallel_mode_options[] = {","html":"-\u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003econst\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estruct\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003econfig_enum_entry\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode_options\u003c/span\u003e[] \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e {","displayNoNewLineWarning":false,"position":4,"left":363,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":364,"text":"-\t{\"off\", FORCE_PARALLEL_OFF, false},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"off\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":5,"left":364,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":365,"text":"-\t{\"on\", FORCE_PARALLEL_ON, false},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"on\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_ON\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":6,"left":365,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":366,"text":"-\t{\"regress\", FORCE_PARALLEL_REGRESS, false},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"regress\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_REGRESS\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":7,"left":366,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":367,"text":"-\t{\"true\", FORCE_PARALLEL_ON, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"true\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":8,"left":367,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":368,"text":"-\t{\"false\", FORCE_PARALLEL_OFF, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"false\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":9,"left":368,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":369,"text":"-\t{\"yes\", FORCE_PARALLEL_ON, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"yes\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":10,"left":369,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":370,"text":"-\t{\"no\", FORCE_PARALLEL_OFF, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"no\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":11,"left":370,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":371,"text":"-\t{\"1\", FORCE_PARALLEL_ON, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"1\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":12,"left":371,"right":362},{"stylingDirective":null,"type":"DELETION","blobLineNumber":372,"text":"-\t{\"0\", FORCE_PARALLEL_OFF, true},","html":"-\t{\u003cspan class=\"pl-s\"\u003e\"0\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":13,"left":372,"right":362},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":363,"text":"+static const struct config_enum_entry debug_parallel_query_options[] = {","html":"+\u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003econst\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estruct\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003econfig_enum_entry\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query_options\u003c/span\u003e[] \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e {","displayNoNewLineWarning":false,"position":14,"left":372,"right":363},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":364,"text":"+\t{\"off\", DEBUG_PARALLEL_OFF, false},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"off\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":15,"left":372,"right":364},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":365,"text":"+\t{\"on\", DEBUG_PARALLEL_ON, false},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"on\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_ON\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":16,"left":372,"right":365},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":366,"text":"+\t{\"regress\", DEBUG_PARALLEL_REGRESS, false},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"regress\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_REGRESS\u003c/span\u003e, false},","displayNoNewLineWarning":false,"position":17,"left":372,"right":366},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":367,"text":"+\t{\"true\", DEBUG_PARALLEL_ON, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"true\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":18,"left":372,"right":367},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":368,"text":"+\t{\"false\", DEBUG_PARALLEL_OFF, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"false\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":19,"left":372,"right":368},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":369,"text":"+\t{\"yes\", DEBUG_PARALLEL_ON, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"yes\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":20,"left":372,"right":369},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":370,"text":"+\t{\"no\", DEBUG_PARALLEL_OFF, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"no\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":21,"left":372,"right":370},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":371,"text":"+\t{\"1\", DEBUG_PARALLEL_ON, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"1\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_ON\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":22,"left":372,"right":371},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":372,"text":"+\t{\"0\", DEBUG_PARALLEL_OFF, true},","html":"+\t{\u003cspan class=\"pl-s\"\u003e\"0\"\u003c/span\u003e, \u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e, true},","displayNoNewLineWarning":false,"position":23,"left":372,"right":372},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":373,"text":" \t{NULL, 0, false}","html":" \t{\u003cspan class=pl-c1\u003eNULL\u003c/span\u003e, \u003cspan class=pl-c1\u003e0\u003c/span\u003e, false}","displayNoNewLineWarning":false,"position":24,"left":373,"right":373},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":374,"text":" };","html":" };","displayNoNewLineWarning":false,"position":25,"left":374,"right":374},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":375,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":26,"left":375,"right":375},{"stylingDirective":null,"type":"HUNK","blobLineNumber":4851,"text":"@@ -4852,13 +4852,15 @@ struct config_enum ConfigureNamesEnum[] =","html":"@@ -4852,13 +4852,15 @@ struct config_enum ConfigureNamesEnum[] =","displayNoNewLineWarning":false,"position":27,"left":4851,"right":4851},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4852,"text":" \t},","html":" \t},","displayNoNewLineWarning":false,"position":28,"left":4852,"right":4852},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4853,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":29,"left":4853,"right":4853},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4854,"text":" \t{","html":" \t{","displayNoNewLineWarning":false,"position":30,"left":4854,"right":4854},{"stylingDirective":null,"type":"DELETION","blobLineNumber":4855,"text":"-\t\t{\"force_parallel_mode\", PGC_USERSET, DEVELOPER_OPTIONS,","html":"-\t\t{\u003cspan class=pl-s\u003e\u0026quot;force_parallel_mode\u0026quot;\u003c/span\u003e, \u003cspan class=pl-c1\u003ePGC_USERSET\u003c/span\u003e, \u003cspan class=pl-c1\u003eDEVELOPER_OPTIONS\u003c/span\u003e,","displayNoNewLineWarning":false,"position":31,"left":4855,"right":4854},{"stylingDirective":null,"type":"DELETION","blobLineNumber":4856,"text":"-\t\t\tgettext_noop(\"Forces use of parallel query facilities.\"),","html":"-\t\t\t\u003cspan class=pl-en\u003egettext_noop\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;Forces use of parallel query facilities.\u0026quot;\u003c/span\u003e),","displayNoNewLineWarning":false,"position":32,"left":4856,"right":4854},{"stylingDirective":null,"type":"DELETION","blobLineNumber":4857,"text":"-\t\t\tgettext_noop(\"If possible, run query using a parallel worker and with parallel restrictions.\"),","html":"-\t\t\t\u003cspan class=pl-en\u003egettext_noop\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;If possible, run query using a parallel worker and with parallel restrictions.\u0026quot;\u003c/span\u003e),","displayNoNewLineWarning":false,"position":33,"left":4857,"right":4854},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4855,"text":"+\t\t{\"debug_parallel_query\", PGC_USERSET, DEVELOPER_OPTIONS,","html":"+\t\t{\u003cspan class=pl-s\u003e\u0026quot;debug_parallel_query\u0026quot;\u003c/span\u003e, \u003cspan class=pl-c1\u003ePGC_USERSET\u003c/span\u003e, \u003cspan class=pl-c1\u003eDEVELOPER_OPTIONS\u003c/span\u003e,","displayNoNewLineWarning":false,"position":34,"left":4857,"right":4855},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4856,"text":"+\t\t\tgettext_noop(\"Forces the planner's use parallel query nodes.\"),","html":"+\t\t\t\u003cspan class=pl-en\u003egettext_noop\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;Forces the planner\u0026#39;s use parallel query nodes.\u0026quot;\u003c/span\u003e),","displayNoNewLineWarning":false,"position":35,"left":4857,"right":4856},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4857,"text":"+\t\t\tgettext_noop(\"This can be useful for testing the parallel query infrastructure \"","html":"+\t\t\t\u003cspan class=pl-en\u003egettext_noop\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;This can be useful for testing the parallel query infrastructure \u0026quot;\u003c/span\u003e","displayNoNewLineWarning":false,"position":36,"left":4857,"right":4857},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4858,"text":"+\t\t\t\t\t\t \"by forcing the planner to generate plans which contains nodes \"","html":"+\t\t\t\t\t\t \u003cspan class=pl-s\u003e\u0026quot;by forcing the planner to generate plans which contains nodes \u0026quot;\u003c/span\u003e","displayNoNewLineWarning":false,"position":37,"left":4857,"right":4858},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4859,"text":"+\t\t\t\t\t\t \"which perform tuple communication between workers and the main process.\"),","html":"+\t\t\t\t\t\t \u003cspan class=pl-s\u003e\u0026quot;which perform tuple communication between workers and the main process.\u0026quot;\u003c/span\u003e),","displayNoNewLineWarning":false,"position":38,"left":4857,"right":4859},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4860,"text":" \t\t\tGUC_NOT_IN_SAMPLE | GUC_EXPLAIN","html":" \t\t\t\u003cspan class=pl-c1\u003eGUC_NOT_IN_SAMPLE\u003c/span\u003e | \u003cspan class=pl-c1\u003eGUC_EXPLAIN\u003c/span\u003e","displayNoNewLineWarning":false,"position":39,"left":4858,"right":4860},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4861,"text":" \t\t},","html":" \t\t},","displayNoNewLineWarning":false,"position":40,"left":4859,"right":4861},{"stylingDirective":null,"type":"DELETION","blobLineNumber":4860,"text":"-\t\t\u0026force_parallel_mode,","html":"-\t\t\u003cspan class=\"pl-c1\"\u003e\u0026amp;\u003c/span\u003e\u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e,","displayNoNewLineWarning":false,"position":41,"left":4860,"right":4861},{"stylingDirective":null,"type":"DELETION","blobLineNumber":4861,"text":"-\t\tFORCE_PARALLEL_OFF, force_parallel_mode_options,","html":"-\t\t\u003cspan class=\"pl-c1 x x-first\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e\u003cspan class=\"x\"\u003e, \u003c/span\u003e\u003cspan class=\"pl-s1 x x-last\"\u003eforce_parallel_mode_options\u003c/span\u003e,","displayNoNewLineWarning":false,"position":42,"left":4861,"right":4861},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4862,"text":"+\t\t\u0026debug_parallel_query,","html":"+\t\t\u003cspan class=\"pl-c1\"\u003e\u0026amp;\u003c/span\u003e\u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e,","displayNoNewLineWarning":false,"position":43,"left":4861,"right":4862},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":4863,"text":"+\t\tDEBUG_PARALLEL_OFF, debug_parallel_query_options,","html":"+\t\t\u003cspan class=\"pl-c1 x x-first\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e\u003cspan class=\"x\"\u003e, \u003c/span\u003e\u003cspan class=\"pl-s1 x x-last\"\u003edebug_parallel_query_options\u003c/span\u003e,","displayNoNewLineWarning":false,"position":44,"left":4861,"right":4863},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4864,"text":" \t\tNULL, NULL, NULL","html":" \t\t\u003cspan class=pl-c1\u003eNULL\u003c/span\u003e, \u003cspan class=pl-c1\u003eNULL\u003c/span\u003e, \u003cspan class=pl-c1\u003eNULL\u003c/span\u003e","displayNoNewLineWarning":false,"position":45,"left":4862,"right":4864},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4865,"text":" \t},","html":" \t},","displayNoNewLineWarning":false,"position":46,"left":4863,"right":4865},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":4866,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":47,"left":4864,"right":4866}],"diffNumber":7,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":4940,"linesChanged":32,"newTreeEntry":{"lineCount":4940,"path":"src/backend/utils/misc/guc_tables.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/backend/utils/misc/guc_tables.c","mode":100644},"linesAdded":17,"linesDeleted":15,"path":"src/backend/utils/misc/guc_tables.c","pathDigest":"06bd32ec4b04fb8c3457ebe3bc25017dfbc9fe66d7eb0104883b02ac0f3b1d93","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":98,"text":"@@ -99,16 +99,16 @@ extern bool is_pseudo_constant_for_index(PlannerInfo *root, Node *expr,","html":"@@ -99,16 +99,16 @@ extern bool is_pseudo_constant_for_index(PlannerInfo *root, Node *expr,","displayNoNewLineWarning":false,"position":0,"left":98,"right":98},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":99,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":1,"left":99,"right":99},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":100,"text":" /* in plan/planner.c: */","html":" \u003cspan class=pl-c\u003e/* in plan/planner.c: */\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":100,"right":100},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":101,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":3,"left":101,"right":101},{"stylingDirective":null,"type":"DELETION","blobLineNumber":102,"text":"-/* possible values for force_parallel_mode */","html":"-\u003cspan class=\"pl-c\"\u003e/* possible values for \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e */\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":102,"right":101},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":102,"text":"+/* possible values for debug_parallel_query */","html":"+\u003cspan class=\"pl-c\"\u003e/* possible values for \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e */\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":102,"right":102},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":103,"text":" typedef enum","html":" \u003cspan class=pl-k\u003etypedef\u003c/span\u003e \u003cspan class=pl-k\u003eenum\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":103,"right":103},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":104,"text":" {","html":" {","displayNoNewLineWarning":false,"position":7,"left":104,"right":104},{"stylingDirective":null,"type":"DELETION","blobLineNumber":105,"text":"-\tFORCE_PARALLEL_OFF,","html":"-\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_OFF\u003c/span\u003e,","displayNoNewLineWarning":false,"position":8,"left":105,"right":104},{"stylingDirective":null,"type":"DELETION","blobLineNumber":106,"text":"-\tFORCE_PARALLEL_ON,","html":"-\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_ON\u003c/span\u003e,","displayNoNewLineWarning":false,"position":9,"left":106,"right":104},{"stylingDirective":null,"type":"DELETION","blobLineNumber":107,"text":"-\tFORCE_PARALLEL_REGRESS","html":"-\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eFORCE_PARALLEL_REGRESS\u003c/span\u003e","displayNoNewLineWarning":false,"position":10,"left":107,"right":104},{"stylingDirective":null,"type":"DELETION","blobLineNumber":108,"text":"-}\t\t\tForceParallelMode;","html":"-}\t\t\t\u003cspan class=\"pl-smi x x-first x-last\"\u003eForceParallelMode\u003c/span\u003e;","displayNoNewLineWarning":false,"position":11,"left":108,"right":104},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":105,"text":"+\tDEBUG_PARALLEL_OFF,","html":"+\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_OFF\u003c/span\u003e,","displayNoNewLineWarning":false,"position":12,"left":108,"right":105},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":106,"text":"+\tDEBUG_PARALLEL_ON,","html":"+\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_ON\u003c/span\u003e,","displayNoNewLineWarning":false,"position":13,"left":108,"right":106},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":107,"text":"+\tDEBUG_PARALLEL_REGRESS","html":"+\t\u003cspan class=\"pl-c1 x x-first x-last\"\u003eDEBUG_PARALLEL_REGRESS\u003c/span\u003e","displayNoNewLineWarning":false,"position":14,"left":108,"right":107},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":108,"text":"+}\t\t\tDebugParallelMode;","html":"+}\t\t\t\u003cspan class=\"pl-smi x x-first x-last\"\u003eDebugParallelMode\u003c/span\u003e;","displayNoNewLineWarning":false,"position":15,"left":108,"right":108},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":109,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":16,"left":109,"right":109},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":110,"text":" /* GUC parameters */","html":" \u003cspan class=pl-c\u003e/* GUC parameters */\u003c/span\u003e","displayNoNewLineWarning":false,"position":17,"left":110,"right":110},{"stylingDirective":null,"type":"DELETION","blobLineNumber":111,"text":"-extern PGDLLIMPORT int force_parallel_mode;","html":"-\u003cspan class=\"pl-k\"\u003eextern\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003ePGDLLIMPORT\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e;","displayNoNewLineWarning":false,"position":18,"left":111,"right":110},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":111,"text":"+extern PGDLLIMPORT int debug_parallel_query;","html":"+\u003cspan class=\"pl-k\"\u003eextern\u003c/span\u003e \u003cspan class=\"pl-smi\"\u003ePGDLLIMPORT\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e;","displayNoNewLineWarning":false,"position":19,"left":111,"right":111},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":112,"text":" extern PGDLLIMPORT bool parallel_leader_participation;","html":" \u003cspan class=pl-k\u003eextern\u003c/span\u003e \u003cspan class=pl-smi\u003ePGDLLIMPORT\u003c/span\u003e \u003cspan class=pl-s1\u003ebool\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_leader_participation\u003c/span\u003e;","displayNoNewLineWarning":false,"position":20,"left":112,"right":112},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":113,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":21,"left":113,"right":113},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":114,"text":" extern struct PlannedStmt *planner(Query *parse, const char *query_string,","html":" \u003cspan class=pl-k\u003eextern\u003c/span\u003e \u003cspan class=pl-k\u003estruct\u003c/span\u003e \u003cspan class=pl-smi\u003ePlannedStmt\u003c/span\u003e \u003cspan class=pl-c1\u003e*\u003c/span\u003e\u003cspan class=pl-en\u003eplanner\u003c/span\u003e(\u003cspan class=pl-smi\u003eQuery\u003c/span\u003e \u003cspan class=pl-c1\u003e*\u003c/span\u003e\u003cspan class=pl-s1\u003eparse\u003c/span\u003e, \u003cspan class=pl-k\u003econst\u003c/span\u003e \u003cspan class=pl-smi\u003echar\u003c/span\u003e \u003cspan class=pl-c1\u003e*\u003c/span\u003e\u003cspan class=pl-s1\u003equery_string\u003c/span\u003e,","displayNoNewLineWarning":false,"position":22,"left":114,"right":114}],"diffNumber":8,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":202,"linesChanged":12,"newTreeEntry":{"lineCount":202,"path":"src/include/optimizer/optimizer.h","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/include/optimizer/optimizer.h","mode":100644},"linesAdded":6,"linesDeleted":6,"path":"src/include/optimizer/optimizer.h","pathDigest":"42ce19912f01c44bbcec8152ffb96d956c5222f689628049e045c75e6795552c","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":8065,"text":"@@ -8066,7 +8066,7 @@ exec_save_simple_expr(PLpgSQL_expr *expr, CachedPlan *cplan)","html":"@@ -8066,7 +8066,7 @@ exec_save_simple_expr(PLpgSQL_expr *expr, CachedPlan *cplan)","displayNoNewLineWarning":false,"position":0,"left":8065,"right":8065},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8066,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":1,"left":8066,"right":8066},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8067,"text":" \t/*","html":" \t\u003cspan class=pl-c\u003e/*\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":8067,"right":8067},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8068,"text":" \t * Ordinarily, the plan node should be a simple Result. However, if","html":" \u003cspan class=pl-c\u003e\t * Ordinarily, the plan node should be a simple Result. However, if\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":8068,"right":8068},{"stylingDirective":null,"type":"DELETION","blobLineNumber":8069,"text":"-\t * force_parallel_mode is on, the planner might've stuck a Gather node","html":"-\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e is on, the planner might've stuck a Gather node\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":8069,"right":8068},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":8069,"text":"+\t * debug_parallel_query is on, the planner might've stuck a Gather node","html":"+\u003cspan class=\"pl-c\"\u003e\t * \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e is on, the planner might've stuck a Gather node\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":8069,"right":8069},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8070,"text":" \t * atop that. The simplest way to deal with this is to look through the","html":" \u003cspan class=pl-c\u003e\t * atop that. The simplest way to deal with this is to look through the\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":8070,"right":8070},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8071,"text":" \t * Gather node. The Gather node's tlist would normally contain a Var","html":" \u003cspan class=pl-c\u003e\t * Gather node. The Gather node\u0026#39;s tlist would normally contain a Var\u003c/span\u003e","displayNoNewLineWarning":false,"position":7,"left":8071,"right":8071},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8072,"text":" \t * referencing the child node's output, but it could also be a Param, or","html":" \u003cspan class=pl-c\u003e\t * referencing the child node\u0026#39;s output, but it could also be a Param, or\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":8072,"right":8072}],"diffNumber":9,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":8819,"linesChanged":2,"newTreeEntry":{"lineCount":8819,"path":"src/pl/plpgsql/src/pl_exec.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/pl/plpgsql/src/pl_exec.c","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"src/pl/plpgsql/src/pl_exec.c","pathDigest":"0c35024d1576c347689c7abad68abd8562a0aa5f0d2c63d6d65df4b360b0e807","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":14,"text":"@@ -15,21 +15,21 @@ lock_share","html":"@@ -15,21 +15,21 @@ lock_share","displayNoNewLineWarning":false,"position":0,"left":14,"right":14},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":15,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":1,"left":15,"right":15},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":16,"text":" step e1l: SELECT lock_excl(1,x) FROM bigt LIMIT 1; \u003cwaiting ...\u003e","html":" step e1l: SELECT lock_excl(1,x) FROM bigt LIMIT 1; \u0026lt;waiting ...\u0026gt;","displayNoNewLineWarning":false,"position":2,"left":16,"right":16},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":17,"text":" step e2l: SELECT lock_excl(2,x) FROM bigt LIMIT 1; \u003cwaiting ...\u003e","html":" step e2l: SELECT lock_excl(2,x) FROM bigt LIMIT 1; \u0026lt;waiting ...\u0026gt;","displayNoNewLineWarning":false,"position":3,"left":17,"right":17},{"stylingDirective":null,"type":"DELETION","blobLineNumber":18,"text":"-step d1a2: SET force_parallel_mode = on;","html":"-step d1a2: SET \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = on;","displayNoNewLineWarning":false,"position":4,"left":18,"right":17},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":18,"text":"+step d1a2: SET debug_parallel_query = on;","html":"+step d1a2: SET \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = on;","displayNoNewLineWarning":false,"position":5,"left":18,"right":18},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":19,"text":" \t\t\t SET parallel_setup_cost = 0;","html":" \t\t\t SET parallel_setup_cost = 0;","displayNoNewLineWarning":false,"position":6,"left":19,"right":19},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":20,"text":" \t\t\t SET parallel_tuple_cost = 0;","html":" \t\t\t SET parallel_tuple_cost = 0;","displayNoNewLineWarning":false,"position":7,"left":20,"right":20},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":21,"text":" \t\t\t SET min_parallel_table_scan_size = 0;","html":" \t\t\t SET min_parallel_table_scan_size = 0;","displayNoNewLineWarning":false,"position":8,"left":21,"right":21},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":22,"text":" \t\t\t SET parallel_leader_participation = off;","html":" \t\t\t SET parallel_leader_participation = off;","displayNoNewLineWarning":false,"position":9,"left":22,"right":22},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":23,"text":" \t\t\t SET max_parallel_workers_per_gather = 3;","html":" \t\t\t SET max_parallel_workers_per_gather = 3;","displayNoNewLineWarning":false,"position":10,"left":23,"right":23},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":24,"text":" \t\t\t SELECT sum(lock_share(2,x)) FROM bigt; \u003cwaiting ...\u003e","html":" \t\t\t SELECT sum(lock_share(2,x)) FROM bigt; \u0026lt;waiting ...\u0026gt;","displayNoNewLineWarning":false,"position":11,"left":24,"right":24},{"stylingDirective":null,"type":"DELETION","blobLineNumber":25,"text":"-step d2a1: SET force_parallel_mode = on;","html":"-step d2a1: SET \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = on;","displayNoNewLineWarning":false,"position":12,"left":25,"right":24},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":25,"text":"+step d2a1: SET debug_parallel_query = on;","html":"+step d2a1: SET \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = on;","displayNoNewLineWarning":false,"position":13,"left":25,"right":25},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":26,"text":" \t\t\t SET parallel_setup_cost = 0;","html":" \t\t\t SET parallel_setup_cost = 0;","displayNoNewLineWarning":false,"position":14,"left":26,"right":26},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":27,"text":" \t\t\t SET parallel_tuple_cost = 0;","html":" \t\t\t SET parallel_tuple_cost = 0;","displayNoNewLineWarning":false,"position":15,"left":27,"right":27},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":28,"text":" \t\t\t SET min_parallel_table_scan_size = 0;","html":" \t\t\t SET min_parallel_table_scan_size = 0;","displayNoNewLineWarning":false,"position":16,"left":28,"right":28},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":29,"text":" \t\t\t SET parallel_leader_participation = off;","html":" \t\t\t SET parallel_leader_participation = off;","displayNoNewLineWarning":false,"position":17,"left":29,"right":29},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":30,"text":" \t\t\t SET max_parallel_workers_per_gather = 3;","html":" \t\t\t SET max_parallel_workers_per_gather = 3;","displayNoNewLineWarning":false,"position":18,"left":30,"right":30},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":31,"text":" \t\t\t SELECT sum(lock_share(1,x)) FROM bigt;","html":" \t\t\t SELECT sum(lock_share(1,x)) FROM bigt;","displayNoNewLineWarning":false,"position":19,"left":31,"right":31},{"stylingDirective":null,"type":"DELETION","blobLineNumber":32,"text":"-\t\t\t SET force_parallel_mode = off;","html":"-\t\t\t SET \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = off;","displayNoNewLineWarning":false,"position":20,"left":32,"right":31},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":32,"text":"+\t\t\t SET debug_parallel_query = off;","html":"+\t\t\t SET \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = off;","displayNoNewLineWarning":false,"position":21,"left":32,"right":32},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":33,"text":" \t\t\t RESET parallel_setup_cost;","html":" \t\t\t RESET parallel_setup_cost;","displayNoNewLineWarning":false,"position":22,"left":33,"right":33},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":34,"text":" \t\t\t RESET parallel_tuple_cost;","html":" \t\t\t RESET parallel_tuple_cost;","displayNoNewLineWarning":false,"position":23,"left":34,"right":34},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":35,"text":" \t\t\t SELECT lock_share(3,x) FROM bigt LIMIT 1; \u003cwaiting ...\u003e","html":" \t\t\t SELECT lock_share(3,x) FROM bigt LIMIT 1; \u0026lt;waiting ...\u0026gt;","displayNoNewLineWarning":false,"position":24,"left":35,"right":35}],"diffNumber":10,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":68,"linesChanged":6,"newTreeEntry":{"lineCount":68,"path":"src/test/isolation/expected/deadlock-parallel.out","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/isolation/expected/deadlock-parallel.out","mode":100644},"linesAdded":3,"linesDeleted":3,"path":"src/test/isolation/expected/deadlock-parallel.out","pathDigest":"733ec2fc50e312875474dfc610f7c838a3bf41ac22b8919cd901c2e89d3eceb9","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":5,"text":"@@ -6,7 +6,7 @@","html":"@@ -6,7 +6,7 @@","displayNoNewLineWarning":false,"position":0,"left":5,"right":5},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":6,"text":" # and is incorrectly marked parallel-safe so that it can execute in a worker.","html":" \u003cspan class=pl-c\u003e# and is incorrectly marked parallel-safe so that it can execute in a worker.\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":6,"right":6},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":7,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":2,"left":7,"right":7},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":8,"text":" # Note that we explicitly override any global settings of isolation level","html":" \u003cspan class=pl-c\u003e# Note that we explicitly override any global settings of isolation level\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":8,"right":8},{"stylingDirective":null,"type":"DELETION","blobLineNumber":9,"text":"-# or force_parallel_mode, to ensure we're testing what we intend to.","html":"-\u003cspan class=\"pl-c\"\u003e# or \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e, to ensure we're testing what we intend to.\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":9,"right":8},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":9,"text":"+# or debug_parallel_query, to ensure we're testing what we intend to.","html":"+\u003cspan class=\"pl-c\"\u003e# or \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e, to ensure we're testing what we intend to.\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":9,"right":9},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":10,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":6,"left":10,"right":10},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":11,"text":" # Otherwise, this is morally equivalent to deadlock-soft.spec:","html":" \u003cspan class=pl-c\u003e# Otherwise, this is morally equivalent to deadlock-soft.spec:\u003c/span\u003e","displayNoNewLineWarning":false,"position":7,"left":11,"right":11},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":12,"text":" # Four-process deadlock with two hard edges and two soft edges.","html":" \u003cspan class=pl-c\u003e# Four-process deadlock with two hard edges and two soft edges.\u003c/span\u003e","displayNoNewLineWarning":false,"position":8,"left":12,"right":12},{"stylingDirective":null,"type":"HUNK","blobLineNumber":54,"text":"@@ -55,13 +55,13 @@ teardown","html":"@@ -55,13 +55,13 @@ teardown","displayNoNewLineWarning":false,"position":9,"left":54,"right":54},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":55,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":10,"left":55,"right":55},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":56,"text":" session d1","html":" \u003cspan class=pl-s1\u003esession\u003c/span\u003e \u003cspan class=pl-s1\u003ed1\u003c/span\u003e","displayNoNewLineWarning":false,"position":11,"left":56,"right":56},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":57,"text":" setup\t\t{ BEGIN isolation level repeatable read;","html":" \u003cspan class=pl-s1\u003esetup\u003c/span\u003e\t\t{ \u003cspan class=pl-c1\u003eBEGIN\u003c/span\u003e \u003cspan class=pl-s1\u003eisolation\u003c/span\u003e \u003cspan class=pl-s1\u003elevel\u003c/span\u003e \u003cspan class=pl-s1\u003erepeatable\u003c/span\u003e \u003cspan class=pl-s1\u003eread\u003c/span\u003e;","displayNoNewLineWarning":false,"position":12,"left":57,"right":57},{"stylingDirective":null,"type":"DELETION","blobLineNumber":58,"text":"-\t\t\t SET force_parallel_mode = off;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":13,"left":58,"right":57},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":58,"text":"+\t\t\t SET debug_parallel_query = off;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":14,"left":58,"right":58},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":59,"text":" \t\t\t SET deadlock_timeout = '10s';","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003edeadlock_timeout\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s\u003e\u0026#39;10s\u0026#39;\u003c/span\u003e;","displayNoNewLineWarning":false,"position":15,"left":59,"right":59},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":60,"text":" }","html":" }","displayNoNewLineWarning":false,"position":16,"left":60,"right":60},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":61,"text":" # these locks will be taken in the leader, so they will persist:","html":" \u003cspan class=pl-c\u003e# these locks will be taken in the leader, so they will persist:\u003c/span\u003e","displayNoNewLineWarning":false,"position":17,"left":61,"right":61},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":62,"text":" step d1a1\t{ SELECT lock_share(1,x), lock_excl(3,x) FROM bigt LIMIT 1; }","html":" \u003cspan class=pl-s1\u003estep\u003c/span\u003e \u003cspan class=pl-s1\u003ed1a1\u 8000 003c/span\u003e\t{ \u003cspan class=pl-c1\u003eSELECT\u003c/span\u003e \u003cspan class=pl-en\u003elock_share\u003c/span\u003e(\u003cspan class=pl-c1\u003e1\u003c/span\u003e,\u003cspan class=pl-s1\u003ex\u003c/span\u003e), \u003cspan class=pl-en\u003elock_excl\u003c/span\u003e(\u003cspan class=pl-c1\u003e3\u003c/span\u003e,\u003cspan class=pl-s1\u003ex\u003c/span\u003e) \u003cspan class=pl-c1\u003eFROM\u003c/span\u003e \u003cspan class=pl-s1\u003ebigt\u003c/span\u003e \u003cspan class=pl-c1\u003eLIMIT\u003c/span\u003e \u003cspan class=pl-c1\u003e1\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":18,"left":62,"right":62},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":63,"text":" # this causes all the parallel workers to take locks:","html":" \u003cspan class=pl-c\u003e# this causes all the parallel workers to take locks:\u003c/span\u003e","displayNoNewLineWarning":false,"position":19,"left":63,"right":63},{"stylingDirective":null,"type":"DELETION","blobLineNumber":64,"text":"-step d1a2\t{ SET force_parallel_mode = on;","html":"-\u003cspan class=\"pl-s1\"\u003estep\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ed1a2\u003c/span\u003e\t{ \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":20,"left":64,"right":63},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":64,"text":"+step d1a2\t{ SET debug_parallel_query = on;","html":"+\u003cspan class=\"pl-s1\"\u003estep\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ed1a2\u003c/span\u003e\t{ \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":21,"left":64,"right":64},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":65,"text":" \t\t\t SET parallel_setup_cost = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_setup_cost\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":22,"left":65,"right":65},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":66,"text":" \t\t\t SET parallel_tuple_cost = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_tuple_cost\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":23,"left":66,"right":66},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":67,"text":" \t\t\t SET min_parallel_table_scan_size = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003emin_parallel_table_scan_size\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":24,"left":67,"right":67},{"stylingDirective":null,"type":"HUNK","blobLineNumber":71,"text":"@@ -72,29 +72,29 @@ step d1c\t{ COMMIT; }","html":"@@ -72,29 +72,29 @@ step d1c\t{ COMMIT; }","displayNoNewLineWarning":false,"position":25,"left":71,"right":71},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":72,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":26,"left":72,"right":72},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":73,"text":" session d2","html":" \u003cspan class=pl-s1\u003esession\u003c/span\u003e \u003cspan class=pl-s1\u003ed2\u003c/span\u003e","displayNoNewLineWarning":false,"position":27,"left":73,"right":73},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":74,"text":" setup\t\t{ BEGIN isolation level repeatable read;","html":" \u003cspan class=pl-s1\u003esetup\u003c/span\u003e\t\t{ \u003cspan class=pl-c1\u003eBEGIN\u003c/span\u003e \u003cspan class=pl-s1\u003eisolation\u003c/span\u003e \u003cspan class=pl-s1\u003elevel\u003c/span\u003e \u003cspan class=pl-s1\u003erepeatable\u003c/span\u003e \u003cspan class=pl-s1\u003eread\u003c/span\u003e;","displayNoNewLineWarning":false,"position":28,"left":74,"right":74},{"stylingDirective":null,"type":"DELETION","blobLineNumber":75,"text":"-\t\t\t SET force_parallel_mode = off;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":29,"left":75,"right":74},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":75,"text":"+\t\t\t SET debug_parallel_query = off;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":30,"left":75,"right":75},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":76,"text":" \t\t\t SET deadlock_timeout = '10ms';","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003edeadlock_timeout\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s\u003e\u0026#39;10ms\u0026#39;\u003c/span\u003e;","displayNoNewLineWarning":false,"position":31,"left":76,"right":76},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":77,"text":" }","html":" }","displayNoNewLineWarning":false,"position":32,"left":77,"right":77},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":78,"text":" # this lock will be taken in the leader, so it will persist:","html":" \u003cspan class=pl-c\u003e# this lock will be taken in the leader, so it will persist:\u003c/span\u003e","displayNoNewLineWarning":false,"position":33,"left":78,"right":78},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":79,"text":" step d2a2\t{ select lock_share(2,x) FROM bigt LIMIT 1; }","html":" \u003cspan class=pl-s1\u003estep\u003c/span\u003e \u003cspan class=pl-s1\u003ed2a2\u003c/span\u003e\t{ \u003cspan class=pl-s1\u003eselect\u003c/span\u003e \u003cspan class=pl-en\u003elock_share\u003c/span\u003e(\u003cspan class=pl-c1\u003e2\u003c/span\u003e,\u003cspan class=pl-s1\u003ex\u003c/span\u003e) \u003cspan class=pl-c1\u003eFROM\u003c/span\u003e \u003cspan class=pl-s1\u003ebigt\u003c/span\u003e \u003cspan class=pl-c1\u003eLIMIT\u003c/span\u003e \u003cspan class=pl-c1\u003e1\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":34,"left":79,"right":79},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":80,"text":" # this causes all the parallel workers to take locks;","html":" \u003cspan class=pl-c\u003e# this causes all the parallel workers to take locks;\u003c/span\u003e","displayNoNewLineWarning":false,"position":35,"left":80,"right":80},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":81,"text":" # after which, make the leader take lock 3 to prevent client-driven deadlock","html":" \u003cspan class=pl-c\u003e# after which, make the leader take lock 3 to prevent client-driven deadlock\u003c/span\u003e","displayNoNewLineWarning":false,"position":36,"left":81,"right":81},{"stylingDirective":null,"type":"DELETION","blobLineNumber":82,"text":"-step d2a1\t{ SET force_parallel_mode = on;","html":"-\u003cspan class=\"pl-s1\"\u003estep\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ed2a1\u003c/span\u003e\t{ \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":37,"left":82,"right":81},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":82,"text":"+step d2a1\t{ SET debug_parallel_query = on;","html":"+\u003cspan class=\"pl-s1\"\u003estep\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003ed2a1\u003c/span\u003e\t{ \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":38,"left":82,"right":82},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":83,"text":" \t\t\t SET parallel_setup_cost = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_setup_cost\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":39,"left":83,"right":83},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":84,"text":" \t\t\t SET parallel_tuple_cost = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_tuple_cost\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":40,"left":84,"right":84},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":85,"text":" \t\t\t SET min_parallel_table_scan_size = 0;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003emin_parallel_table_scan_size\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e0\u003c/span\u003e;","displayNoNewLineWarning":false,"position":41,"left":85,"right":85},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":86,"text":" \t\t\t SET parallel_leader_participation = off;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_leader_participation\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s1\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":42,"left":86,"right":86},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":87,"text":" \t\t\t SET max_parallel_workers_per_gather = 3;","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003emax_parallel_workers_per_gather\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-c1\u003e3\u003c/span\u003e;","displayNoNewLineWarning":false,"position":43,"left":87,"right":87},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":88,"text":" \t\t\t SELECT sum(lock_share(1,x)) FROM bigt;","html":" \t\t\t \u003cspan class=pl-c1\u003eSELECT\u003c/span\u003e \u003cspan class=pl-en\u003esum\u003c/span\u003e(\u003cspan class=pl-en\u003elock_share\u003c/span\u003e(\u003cspan class=pl-c1\u003e1\u003c/span\u003e,\u003cspan class=pl-s1\u003ex\u003c/span\u003e)) \u003cspan class=pl-c1\u003eFROM\u003c/span\u003e \u003cspan class=pl-s1\u003ebigt\u003c/span\u003e;","displayNoNewLineWarning":false,"position":44,"left":88,"right":88},{"stylingDirective":null,"type":"DELETION","blobLineNumber":89,"text":"-\t\t\t SET force_parallel_mode = off;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":45,"left":89,"right":88},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":89,"text":"+\t\t\t SET debug_parallel_query = off;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eoff\u003c/span\u003e;","displayNoNewLineWarning":false,"position":46,"left":89,"right":89},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":90,"text":" \t\t\t RESET parallel_setup_cost;","html":" \t\t\t \u003cspan class=pl-c1\u003eRESET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_setup_cost\u003c/span\u003e;","displayNoNewLineWarning":false,"position":47,"left":90,"right":90},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":91,"text":" \t\t\t RESET parallel_tuple_cost;","html":" \t\t\t \u003cspan class=pl-c1\u003eRESET\u003c/span\u003e \u003cspan class=pl-s1\u003eparallel_tuple_cost\u003c/span\u003e;","displayNoNewLineWarning":false,"position":48,"left":91,"right":91},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":92,"text":" \t\t\t SELECT lock_share(3,x) FROM bigt LIMIT 1; }","html":" \t\t\t \u003cspan class=pl-c1\u003eSELECT\u003c/span\u003e \u003cspan class=pl-en\u003elock_share\u003c/span\u003e(\u003cspan class=pl-c1\u003e3\u003c/span\u003e,\u003cspan class=pl-s1\u003ex\u003c/span\u003e) \u003cspan class=pl-c1\u003eFROM\u003c/span\u003e \u003cspan class=pl-s1\u003ebigt\u003c/span\u003e \u003cspan class=pl-c1\u003eLIMIT\u003c/span\u003e \u003cspan class=pl-c1\u003e1\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":49,"left":92,"right":92},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":93,"text":" step d2c\t{ COMMIT; }","html":" \u003cspan class=pl-s1\u003estep\u003c/span\u003e \u003cspan class=pl-s1\u003ed2c\u003c/span\u003e\t{ \u003cspan class=pl-c1\u003eCOMMIT\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":50,"left":93,"right":93},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":94,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":51,"left":94,"right":94},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":95,"text":" session e1","html":" \u003cspan class=pl-s1\u003esession\u003c/span\u003e \u003cspan class=pl-s1\u003ee1\u003c/span\u003e","displayNoNewLineWarning":false,"position":52,"left":95,"right":95},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":96,"text":" setup\t\t{ BEGIN isolation level repeatable read;","html":" \u003cspan class=pl-s1\u003esetup\u003c/span\u003e\t\t{ \u003cspan class=pl-c1\u003eBEGIN\u003c/span\u003e \u003cspan class=pl-s1\u003eisolation\u003c/span\u003e \u003cspan class=pl-s1\u003elevel\u003c/span\u003e \u003cspan class=pl-s1\u003erepeatable\u003c/span\u003e \u003cspan class=pl-s1\u003eread\u003c/span\u003e;","displayNoNewLineWarning":false,"position":53,"left":96,"right":96},{"stylingDirective":null,"type":"DELETION","blobLineNumber":97,"text":"-\t\t\t SET force_parallel_mode = on;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":54,"left":97,"right":96},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":97,"text":"+\t\t\t SET debug_parallel_query = on;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":55,"left":97,"right":97},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":98,"text":" \t\t\t SET deadlock_timeout = '10s';","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003edeadlock_timeout\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s\u003e\u0026#39;10s\u0026#39;\u003c/span\u003e;","displayNoNewLineWarning":false,"position":56,"left":98,"right":98},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":99,"text":" }","html":" }","displayNoNewLineWarning":false,"position":57,"left":99,"right":99},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":100,"text":" # this lock will be taken in a parallel worker, but we don't need it to persist","html":" \u003cspan class=pl-c\u003e# this lock will be taken in a parallel worker, but we don\u0026#39;t need it to persist\u003c/span\u003e","displayNoNewLineWarning":false,"position":58,"left":100,"right":100},{"stylingDirective":null,"type":"HUNK","blobLineNumber":102,"text":"@@ -103,7 +103,7 @@ step e1c\t{ COMMIT; }","html":"@@ -103,7 +103,7 @@ step e1c\t{ COMMIT; }","displayNoNewLineWarning":false,"position":59,"left":102,"right":102},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":103,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":60,"left":103,"right":103},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":104,"text":" session e2","html":" \u003cspan class=pl-s1\u003esession\u003c/span\u003e \u003cspan class=pl-s1\u003ee2\u003c/span\u003e","displayNoNewLineWarning":false,"position":61,"left":104,"right":104},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":105,"text":" setup\t\t{ BEGIN isolation level repeatable read;","html":" \u003cspan class=pl-s1\u003esetup\u003c/span\u003e\t\t{ \u003cspan class=pl-c1\u003eBEGIN\u003c/span\u003e \u003cspan class=pl-s1\u003eisolation\u003c/span\u003e \u003cspan class=pl-s1\u003elevel\u003c/span\u003e \u003cspan class=pl-s1\u003erepeatable\u003c/span\u003e \u003cspan class=pl-s1\u003eread\u003c/span\u003e;","displayNoNewLineWarning":false,"position":62,"left":105,"right":105},{"stylingDirective":null,"type":"DELETION","blobLineNumber":106,"text":"-\t\t\t SET force_parallel_mode = on;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":63,"left":106,"right":105},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":106,"text":"+\t\t\t SET debug_parallel_query = on;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":64,"left":106,"right":106},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":107,"text":" \t\t\t SET deadlock_timeout = '10s';","html":" \t\t\t \u003cspan class=pl-c1\u003eSET\u003c/span\u003e \u003cspan class=pl-s1\u003edeadlock_timeout\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-s\u003e\u0026#39;10s\u0026#39;\u003c/span\u003e;","displayNoNewLineWarning":false,"position":65,"left":107,"right":107},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":108,"text":" }","html":" }","displayNoNewLineWarning":false,"position":66,"left":108,"right":108},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":109,"text":" # this lock will be taken in a parallel worker, but we don't need it to persist","html":" \u003cspan class=pl-c\u003e# this lock will be taken in a parallel worker, but we don\u0026#39;t need it to persist\u003c/span\u003e","displayNoNewLineWarning":false,"position":67,"left":109,"right":109}],"diffNumber":11,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":113,"linesChanged":16,"newTreeEntry":{"lineCount":113,"path":"src/test/isolation/specs/deadlock-parallel.spec","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/isolation/specs/deadlock-parallel.spec","mode":100644},"linesAdded":8,"linesDeleted":8,"path":"src/test/isolation/specs/deadlock-parallel.spec","pathDigest":"efb9793526c363e7d3fe6ee263873e570b6ed25d0272a8d06d2fb75d10a669e2","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":34,"text":"@@ -35,7 +35,7 @@ step s2c\t{ COMMIT; }","html":"@@ -35,7 +35,7 @@ step s2c\t{ COMMIT; }","displayNoNewLineWarning":false,"position":0,"left":34,"right":34},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":35,"text":" session s3","html":" \u003cspan class=pl-s1\u003esession\u003c/span\u003e \u003cspan class=pl-s1\u003es3\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":35,"right":35},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":36,"text":" setup\t\t{","html":" \u003cspan class=pl-s1\u003esetup\u003c/span\u003e\t\t{","displayNoNewLineWarning":false,"position":2,"left":36,"right":36},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":37,"text":" \t\t\t BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;","html":" \t\t\t \u003cspan class=pl-c1\u003eBEGIN\u003c/span\u003e \u003cspan class=pl-c1\u003eTRANSACTION\u003c/span\u003e \u003cspan class=pl-c1\u003eISOLATION\u003c/span\u003e \u003cspan class=pl-c1\u003eLEVEL\u003c/span\u003e \u003cspan class=pl-c1\u003eSERIALIZABLE\u003c/span\u003e;","displayNoNewLineWarning":false,"position":3,"left":37,"right":37},{"stylingDirective":null,"type":"DELETION","blobLineNumber":38,"text":"-\t\t\t SET force_parallel_mode = on;","html":"-\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":4,"left":38,"right":37},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":38,"text":"+\t\t\t SET debug_parallel_query = on;","html":"+\t\t\t \u003cspan class=\"pl-c1\"\u003eSET\u003c/span\u003e \u003cspan class=\"pl-s1 x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003eon\u003c/span\u003e;","displayNoNewLineWarning":false,"position":5,"left":38,"right":38},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":39,"text":" \t\t\t}","html":" \t\t\t}","displayNoNewLineWarning":false,"position":6,"left":39,"right":39},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":40,"text":" step s3r\t{ SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; }","html":" \u003cspan class=pl-s1\u003estep\u003c/span\u003e \u003cspan class=pl-s1\u003es3r\u003c/span\u003e\t{ \u003cspan class=pl-c1\u003eSELECT\u003c/span\u003e \u003cspan class=pl-s1\u003eid\u003c/span\u003e, \u003cspan class=pl-s1\u003ebalance\u003c/span\u003e \u003cspan class=pl-c1\u003eFROM\u003c/span\u003e \u003cspan class=pl-s1\u003ebank_account\u003c/span\u003e \u003cspan class=pl-c1\u003eWHERE\u003c/span\u003e \u003cspan class=pl-s1\u003eid\u003c/span\u003e \u003cspan class=pl-en\u003eIN\u003c/span\u003e (\u003cspan class=pl-s\u003e\u0026#39;X\u0026#39;\u003c/span\u003e, \u003cspan class=pl-s\u003e\u0026#39;Y\u0026#39;\u003c/span\u003e) \u003cspan class=pl-c1\u003eORDER\u003c/span\u003e \u003cspan class=pl-c1\u003eBY\u003c/span\u003e \u003cspan class=pl-s1\u003eid\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":7,"left":40,"right":40},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":41,"text":" step s3c\t{ COMMIT; }","html":" \u003cspan class=pl-s1\u003estep\u003c/span\u003e \u003cspan class=pl-s1\u003es3c\u003c/span\u003e\t{ \u003cspan class=pl-c1\u003eCOMMIT\u003c/span\u003e; }","displayNoNewLineWarning":false,"position":8,"left":41,"right":41}],"diffNumber":12,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":47,"linesChanged":2,"newTreeEntry":{"lineCount":47,"path":"src/test/isolation/specs/serializable-parallel.spec","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/isolation/specs/serializable-parallel.spec","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"src/test/isolation/specs/serializable-parallel.spec","pathDigest":"4da243cb7f6d2402b316230fcf2d26aee4b839367af25afc69e47a2dc0d1361c","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":1759,"text":"@@ -1760,9 +1760,9 @@ main(int argc, char **argv)","html":"@@ -1760,9 +1760,9 @@ main(int argc, char **argv)","displayNoNewLineWarning":false,"position":0,"left":1759,"right":1759},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1760,"text":" \tres = PQexec(conn, \"SET lc_messages TO \\\"C\\\"\");","html":" \t\u003cspan class=pl-s1\u003eres\u003c/span\u003e \u003cspan class=pl-c1\u003e=\u003c/span\u003e \u003cspan class=pl-en\u003ePQexec\u003c/span\u003e(\u003cspan class=pl-s1\u003econn\u003c/span\u003e, \u003cspan class=pl-s\u003e\u0026quot;SET lc_messages TO \\\u0026quot;C\\\u0026quot;\u0026quot;\u003c/span\u003e);","displayNoNewLineWarning":false,"position":1,"left":1760,"right":1760},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1761,"text":" \tif (PQresultStatus(res) != PGRES_COMMAND_OK)","html":" \t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-en\u003ePQresultStatus\u003c/span\u003e(\u003cspan class=pl-s1\u003eres\u003c/span\u003e) \u003cspan class=pl-c1\u003e!=\u003c/span\u003e \u003cspan class=pl-c1\u003ePGRES_COMMAND_OK\u003c/span\u003e)","displayNoNewLineWarning":false,"position":2,"left":1761,"right":1761},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1762,"text":" \t\tpg_fatal(\"failed to set lc_messages: %s\", PQerrorMessage(conn));","html":" \t\t\u003cspan class=pl-en\u003epg_fatal\u003c/span\u003e(\u003cspan class=pl-s\u003e\u0026quot;failed to set lc_messages: %s\u0026quot;\u003c/span\u003e, \u003cspan class=pl-en\u003ePQerrorMessage\u003c/span\u003e(\u003cspan class=pl-s1\u003econn\u003c/span\u003e));","displayNoNewLineWarning":false,"position":3,"left":1762,"right":1762},{"stylingDirective":null,"type":"DELETION","blobLineNumber":1763,"text":"-\tres = PQexec(conn, \"SET force_parallel_mode = off\");","html":"-\t\u003cspan class=\"pl-s1\"\u003eres\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-en\"\u003ePQexec\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003econn\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"SET \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = off\"\u003c/span\u003e);","displayNoNewLineWarning":false,"position":4,"left":1763,"right":1762},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":1763,"text":"+\tres = PQexec(conn, \"SET debug_parallel_query = off\");","html":"+\t\u003cspan class=\"pl-s1\"\u003eres\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e=\u003c/span\u003e \u003cspan class=\"pl-en\"\u003ePQexec\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003econn\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"SET \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = off\"\u003c/span\u003e);","displayNoNewLineWarning":false,"position":5,"left":1763,"right":1763},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1764,"text":" \tif (PQresultStatus(res) != PGRES_COMMAND_OK)","html":" \t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-en\u003ePQresultStatus\u003c/span\u003e(\u003cspan class=pl-s1\u003eres\u003c/span\u003e) \u003cspan class=pl-c1\u003e!=\u003c/span\u003e \u003cspan class=pl-c1\u003ePGRES_COMMAND_OK\u003c/span\u003e)","displayNoNewLineWarning":false,"position":6,"left":1764,"right":1764},{"stylingDirective":null,"type":"DELETION","blobLineNumber":1765,"text":"-\t\tpg_fatal(\"failed to set force_parallel_mode: %s\", PQerrorMessage(conn));","html":"-\t\t\u003cspan class=\"pl-en\"\u003epg_fatal\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\"failed to set \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e: %s\"\u003c/span\u003e, \u003cspan class=\"pl-en\"\u003ePQerrorMessage\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003econn\u003c/span\u003e));","displayNoNewLineWarning":false,"position":7,"left":1765,"right":1764},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":1765,"text":"+\t\tpg_fatal(\"failed to set debug_parallel_query: %s\", PQerrorMessage(conn));","html":"+\t\t\u003cspan class=\"pl-en\"\u003epg_fatal\u003c/span\u003e(\u003cspan class=\"pl-s\"\u003e\"failed to set \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e: %s\"\u003c/span\u003e, \u003cspan class=\"pl-en\"\u003ePQerrorMessage\u003c/span\u003e(\u003cspan class=\"pl-s1\"\u003econn\u003c/span\u003e));","displayNoNewLineWarning":false,"position":8,"left":1765,"right":1765},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1766,"text":" ","html":"\u003cbr\u003e","displayNoNewLineWarning":false,"position":9,"left":1766,"right":1766},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1767,"text":" \t/* Set the trace file, if requested */","html":" \t\u003cspan class=pl-c\u003e/* Set the trace file, if requested */\u003c/span\u003e","displayNoNewLineWarning":false,"position":10,"left":1767,"right":1767},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1768,"text":" \tif (tracefile != NULL)","html":" \t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-s1\u003etracefile\u003c/span\u003e \u003cspan class=pl-c1\u003e!=\u003c/span\u003e \u003cspan class=pl-c1\u003eNULL\u003c/span\u003e)","displayNoNewLineWarning":false,"position":11,"left":1768,"right":1768}],"diffNumber":13,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":1816,"linesChanged":4,"newTreeEntry":{"lineCount":1816,"path":"src/test/modules/libpq_pipeline/libpq_pipeline.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/modules/libpq_pipeline/libpq_pipeline.c","mode":100644},"linesAdded":2,"linesDeleted":2,"path":"src/test/modules/libpq_pipeline/libpq_pipeline.c","pathDigest":"165f5165fe5eca8eabe2ef57dcdfb19be672fb5e90ac51a776ee488c21a28cad","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":232,"text":"@@ -233,7 +233,7 @@ emit_audit_message(const char *type, const char *hook, char *action, char *objNa","html":"@@ -233,7 +233,7 @@ emit_audit_message(const char *type, const char *hook, char *action, char *objNa","displayNoNewLineWarning":false,"position":0,"left":232,"right":232},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":233,"text":" \t/*","html":" \t\u003cspan class=pl-c\u003e/*\u003c/span\u003e","displayNoNewLineWarning":false,"position":1,"left":233,"right":233},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":234,"text":" \t * Ensure that audit messages are not duplicated by only emitting them","html":" \u003cspan class=pl-c\u003e\t * Ensure that audit messages are not duplicated by only emitting them\u003c/span\u003e","displayNoNewLineWarning":false,"position":2,"left":234,"right":234},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":235,"text":" \t * from a leader process, not a worker process. This makes the test","html":" \u003cspan class=pl-c\u003e\t * from a leader process, not a worker process. This makes the test\u003c/span\u003e","displayNoNewLineWarning":false,"position":3,"left":235,"right":235},{"stylingDirective":null,"type":"DELETION","blobLineNumber":236,"text":"-\t * results deterministic even if run with force_parallel_mode = regress.","html":"-\u003cspan class=\"pl-c\"\u003e\t * results deterministic even if run with \u003cspan 10000 class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e = regress.\u003c/span\u003e","displayNoNewLineWarning":false,"position":4,"left":236,"right":235},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":236,"text":"+\t * results deterministic even if run with debug_parallel_query = regress.","html":"+\u003cspan class=\"pl-c\"\u003e\t * results deterministic even if run with \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e = regress.\u003c/span\u003e","displayNoNewLineWarning":false,"position":5,"left":236,"right":236},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":237,"text":" \t */","html":" \u003cspan class=pl-c\u003e\t */\u003c/span\u003e","displayNoNewLineWarning":false,"position":6,"left":237,"right":237},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":238,"text":" \tif (REGRESS_audit \u0026\u0026 !IsParallelWorker())","html":" \t\u003cspan class=pl-k\u003eif\u003c/span\u003e (\u003cspan class=pl-s1\u003eREGRESS_audit\u003c/span\u003e \u003cspan class=pl-c1\u003e\u0026amp;\u0026amp;\u003c/span\u003e !\u003cspan class=pl-en\u003eIsParallelWorker\u003c/span\u003e())","displayNoNewLineWarning":false,"position":7,"left":238,"right":238},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":239,"text":" \t{","html":" \t{","displayNoNewLineWarning":false,"position":8,"left":239,"right":239}],"diffNumber":14,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":518,"linesChanged":2,"newTreeEntry":{"lineCount":518,"path":"src/test/modules/test_oat_hooks/test_oat_hooks.c","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/modules/test_oat_hooks/test_oat_hooks.c","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"src/test/modules/test_oat_hooks/test_oat_hooks.c","pathDigest":"10cd338c7f63622b97319754d356c9c7344041252ba25ac28b34fcc99f42f700","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":3256,"text":"@@ -3257,7 +3257,7 @@ select array[1,3] \u003c@ arraymultirange(arrayrange(array[1,2], array[2,1]));","html":"@@ -3257,7 +3257,7 @@ select array[1,3] \u0026lt;@ arraymultirange(arrayrange(array[1,2], array[2,1]));","displayNoNewLineWarning":false,"position":0,"left":3256,"right":3256},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3257,"text":" --","html":" --","displayNoNewLineWarning":false,"position":1,"left":3257,"right":3257},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3258,"text":" create type two_ints as (a int, b int);","html":" create type two_ints as (a int, b int);","displayNoNewLineWarning":false,"position":2,"left":3258,"right":3258},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3259,"text":" create type two_ints_range as range (subtype = two_ints);","html":" create type two_ints_range as range (subtype = two_ints);","displayNoNewLineWarning":false,"position":3,"left":3259,"right":3259},{"stylingDirective":null,"type":"DELETION","blobLineNumber":3260,"text":"--- with force_parallel_mode on, this exercises tqueue.c's range remapping","html":"--- with \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e on, this exercises tqueue.c\u0026#39;s range remapping","displayNoNewLineWarning":false,"position":4,"left":3260,"right":3259},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":3260,"text":"+-- with debug_parallel_query on, this exercises tqueue.c's range remapping","html":"+-- with \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e on, this exercises tqueue.c\u0026#39;s range remapping","displayNoNewLineWarning":false,"position":5,"left":3260,"right":3260},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3261,"text":" select *, row_to_json(upper(t)) as u from","html":" select *, row_to_json(upper(t)) as u from","displayNoNewLineWarning":false,"position":6,"left":3261,"right":3261},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3262,"text":" (values (two_ints_multirange(two_ints_range(row(1,2), row(3,4)))),","html":" (values (two_ints_multirange(two_ints_range(row(1,2), row(3,4)))),","displayNoNewLineWarning":false,"position":7,"left":3262,"right":3262},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":3263,"text":" (two_ints_multirange(two_ints_range(row(5,6), row(7,8))))) v(t);","html":" (two_ints_multirange(two_ints_range(row(5,6), row(7,8))))) v(t);","displayNoNewLineWarning":false,"position":8,"left":3263,"right":3263}],"diffNumber":15,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":3363,"linesChanged":2,"newTreeEntry":{"lineCount":3363,"path":"src/test/regress/expected/multirangetypes.out","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/regress/expected/multirangetypes.out","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"src/test/regress/expected/multirangetypes.out","pathDigest":"1453ca0bdf1836cec9d9b3c433ea1c441f21d2449aa9b5fcfaa18d16897bcc43","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"diffLines":[{"stylingDirective":null,"type":"HUNK","blobLineNumber":1742,"text":"@@ -1743,7 +1743,7 @@ select array[1,3] \u003c@ arrayrange(array[1,2], array[2,1]);","html":"@@ -1743,7 +1743,7 @@ select array[1,3] \u0026lt;@ arrayrange(array[1,2], array[2,1]);","displayNoNewLineWarning":false,"position":0,"left":1742,"right":1742},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1743,"text":" --","html":" --","displayNoNewLineWarning":false,"position":1,"left":1743,"right":1743},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1744,"text":" create type two_ints as (a int, b int);","html":" create type two_ints as (a int, b int);","displayNoNewLineWarning":false,"position":2,"left":1744,"right":1744},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1745,"text":" create type two_ints_range as range (subtype = two_ints);","html":" create type two_ints_range as range (subtype = two_ints);","displayNoNewLineWarning":false,"position":3,"left":1745,"right":1745},{"stylingDirective":null,"type":"DELETION","blobLineNumber":1746,"text":"--- with force_parallel_mode on, this exercises tqueue.c's range remapping","html":"--- with \u003cspan class=\"x x-first x-last\"\u003eforce_parallel_mode\u003c/span\u003e on, this exercises tqueue.c\u0026#39;s range remapping","displayNoNewLineWarning":false,"position":4,"left":1746,"right":1745},{"stylingDirective":null,"type":"ADDITION","blobLineNumber":1746,"text":"+-- with debug_parallel_query on, this exercises tqueue.c's range remapping","html":"+-- with \u003cspan class=\"x x-first x-last\"\u003edebug_parallel_query\u003c/span\u003e on, this exercises tqueue.c\u0026#39;s range remapping","displayNoNewLineWarning":false,"position":5,"left":1746,"right":1746},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1747,"text":" select *, row_to_json(upper(t)) as u from","html":" select *, row_to_json(upper(t)) as u from","displayNoNewLineWarning":false,"position":6,"left":1747,"right":1747},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1748,"text":" (values (two_ints_range(row(1,2), row(3,4))),","html":" (values (two_ints_range(row(1,2), row(3,4))),","displayNoNewLineWarning":false,"position":7,"left":1748,"right":1748},{"stylingDirective":null,"type":"CONTEXT","blobLineNumber":1749,"text":" (two_ints_range(row(5,6), row(7,8)))) v(t);","html":" (two_ints_range(row(5,6), row(7,8)))) v(t);","displayNoNewLineWarning":false,"position":8,"left":1749,"right":1749}],"diffNumber":16,"diffSize":"0 Bytes","isBinary":false,"isTooBig":false,"collapsed":false,"isSubmodule":false,"lineCount":1836,"linesChanged":2,"newTreeEntry":{"lineCount":1836,"path":"src/test/regress/expected/rangetypes.out","mode":100644,"isGenerated":false},"oldTreeEntry":{"lineCount":0,"path":"src/test/regress/expected/rangetypes.out","mode":100644},"linesAdded":1,"linesDeleted":1,"path":"src/test/regress/expected/rangetypes.out","pathDigest":"fb6235b415ac3f6a8b5aa1bf9d3c14db00a92f3e50f312cfb68ef5a4a8843dc4","status":"MODIFIED","truncatedReason":null,"oldOid":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","newOid":"5352ca22e0012d48055453ca9992a9515d811291","copilotChatReference":null,"deletedSha":"8e0e0698f12bd77da38f6863ecdbe88a63ed49dc","canToggleRichDiff":false,"defaultToRichDiff":false,"proseDifffHtml":null,"renderInfo":null,"dependencyDiffPath":null,"submodule":null},{"path":"src/test/regress/expected/select_parallel.out","pathDigest":"4a062ac293b325d8c96fa560293469fe73c426708dbd8c5f2f3d893d214868e1","status":"MODIFIED"},{"path":"src/test/regress/expected/with.out","pathDigest":"d2ceed1900443d3184fa3a2e0cddd9520dc088922880b42bb84fe1fa6cf154ba","status":"MODIFIED"},{"path":"src/test/regress/sql/multirangetypes.sql","pathDigest":"3c195e8bb0e4a9aa4221a4b4094ba88883292f80db2456b8fa576545391c2e35","status":"MODIFIED"},{"path":"src/test/regress/sql/rangetypes.sql","pathDigest":"84493c5a5a1eee7295accedafd7809563901fe4de1c9301447be4ead1d88f021","status":"MODIFIED"},{"path":"src/test/regress/sql/select_parallel.sql","pathDigest":"d935600540f8b0b1f82f1c7b35823e6a09f92fabf96352cb4c17928ad5bda3fa","status":"MODIFIED"},{"path":"src/test/regress/sql/with.sql","pathDigest":"ea082c4e400799031aaa5fb15ba69d8ddd888a09a6e3cebd23e6537c3434f556","status":"MODIFIED"}],"splitViewPreference":"unified","ignoreWhitespace":false,"repoOwnerGlobalRelayId":"MDEyOk9yZ2FuaXphdGlvbjE3NzU0Mw==","commentsPreference":"visible","diffLineSpacingPreference":"relaxed","useMonospaceFont":false,"pasteUrlLinkAsPlainText":false,"userNotices":[],"path":"/postgres/postgres/commit/5352ca22e0012d48055453ca9992a9515d811291","fileTreeExpanded":true,"headerInfo":{"additions":79,"deletions":76,"filesChanged":23,"filesChangedString":"23"},"moreDiffsToLoad":true,"asyncDiffLoadInfo":{"startIndex":17,"truncated":false,"byteCount":16147,"lineShownCount":355},"commentInfo":{"canComment":false,"locked":false,"canLock":false,"repoArchived":false},"csrf_tokens":{"/users/diffview?diff=split":{"post":"23zF6R3K2M7AQB-qmg8FJmbTiKPL8naai5sTCW25lFGkEZf90EAymW5SqDjcLXjLvnZ_RZjXL5G9aPEWvg9fqg"},"/users/diffview?diff=unified":{"post":"8FsW25akZsYyapmtlHmUxyZl9R1J7FuGA2ShyBfYpZ6PNkTPWy6MkZx4Lj_SW-kq_sAC-xrJAo01l0PXxG5uZQ"},"/notifications/thread":{"post":"92eugWSeZQlYCPbS6mzMT0WzXxa7M2mx59iqOTs_MgF-Qm0K43g68lLzuG__I72io-dgCYTER0mwatM0j1vPkQ"}}},"title":"Rename force_parallel_mode to debug_parallel_query · postgres/postgres@5352ca2","appPayload":{"helpUrl":"https://docs.github.com","findInDiffWorkerPath":"/assets-cdn/worker/find-in-diff-worker-2bfe39677d14.js","enabled_features":{"diff_ux_refresh_beta":false,"diff_inline_comments":true,"diff_ux_refresh_ssr_five":false,"diff_ux_refresh_ssr_ten":false,"react_diff_line_type_character_correction":true}}}

Commit 5352ca2

Browse files
committed
Rename force_parallel_mode to debug_parallel_query
force_parallel_mode is meant to be used to allow us to exercise the parallel query infrastructure to ensure that it's working as we expect. It seems some users think this GUC is for forcing the query planner into picking a parallel plan regardless of the costs. A quick look at the documentation would have made them realize that they were wrong, but the GUC is likely too conveniently named which, evidently, seems to often result in users expecting that it forces the planner into usefully parallelizing queries. Here we rename the GUC to something which casual users are less likely to mistakenly think is what they need to make their query run more quickly. For now, the old name can still be used. We'll revisit if the old name mapping can be removed once the buildfarm configs are all updated. Reviewed-by: John Naylor Discussion: https://postgr.es/m/CAApHDvrsOi92_uA7PEaHZMH-S4Xv+MGhQWA+GrP8b1kjpS1HjQ@mail.gmail.com
1 parent 8e0e069 commit 5352ca2

File tree

23 files changed

+79
-76
lines changed

23 files changed

+79
-76
lines changed

doc/src/sgml/config.sgml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11091,17 +11091,17 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
1109111091
</listitem>
1109211092
</varlistentry>
1109311093

11094-
<varlistentry id="guc-force-parallel-mode" xreflabel="force_parallel_mode">
11095-
<term><varname>force_parallel_mode</varname> (<type>enum</type>)
11094+
<varlistentry id="guc-debug-parallel-query" xreflabel="debug_parallel_query">
11095+
<term><varname>debug_parallel_query</varname> (<type>enum</type>)
1109611096
<indexterm>
11097-
<primary><varname>force_parallel_mode</varname> configuration parameter</primary>
11097+
<primary><varname>debug_parallel_query</varname> configuration parameter</primary>
1109811098
</indexterm>
1109911099
</term>
1110011100
<listitem>
1110111101
<para>
1110211102
Allows the use of parallel queries for testing purposes even in cases
1110311103
where no performance benefit is expected.
11104-
The allowed values of <varname>force_parallel_mode</varname> are
11104+
The allowed values of <varname>debug_parallel_query</varname> are
1110511105
<literal>off</literal> (use parallel mode only when it is expected to improve
1110611106
performance), <literal>on</literal> (force parallel query for all queries
1110711107
for which it is thought to be safe), and <literal>regress</literal> (like

doc/src/sgml/regress.sgml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ make check LANG=C ENCODING=EUC_JP
370370
set in the <varname>PGOPTIONS</varname> environment variable (for settings
371371
that allow this):
372372
<screen>
373-
make check PGOPTIONS="-c force_parallel_mode=regress -c work_mem=50MB"
373+
make check PGOPTIONS="-c debug_parallel_query=regress -c work_mem=50MB"
374374
</screen>
375375
When running against a temporary installation, custom settings can also be
376376
set by supplying a pre-written <filename>postgresql.conf</filename>:

src/backend/access/transam/parallel.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1152,11 +1152,11 @@ HandleParallelMessage(ParallelContext *pcxt, int i, StringInfo msg)
11521152
* If desired, add a context line to show that this is a
11531153
* message propagated from a parallel worker. Otherwise, it
11541154
* can sometimes be confusing to understand what actually
1155-
* happened. (We don't do this in FORCE_PARALLEL_REGRESS mode
1155+
* happened. (We don't do this in DEBUG_PARALLEL_REGRESS mode
11561156
* because it causes test-result instability depending on
11571157
* whether a parallel worker is actually used or not.)
11581158
*/
1159-
if (force_parallel_mode != FORCE_PARALLEL_REGRESS)
1159+
if (debug_parallel_query != DEBUG_PARALLEL_REGRESS)
11601160
{
11611161
if (edata.context)
11621162
edata.context = psprintf("%s\n%s", edata.context,

src/backend/commands/explain.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -756,8 +756,8 @@ ExplainPrintPlan(ExplainState *es, QueryDesc *queryDesc)
756756
/*
757757
* Sometimes we mark a Gather node as "invisible", which means that it's
758758
* not to be displayed in EXPLAIN output. The purpose of this is to allow
759-
* running regression tests with force_parallel_mode=regress to get the
760-
* same results as running the same tests with force_parallel_mode=off.
759+
* running regression tests with debug_parallel_query=regress to get the
760+
* same results as running the same tests with debug_parallel_query=off.
761761
* Such marking is currently only supported on a Gather at the top of the
762762
* plan. We skip that node, and we must also hide per-worker detail data
763763
* further down in the plan tree.

src/backend/optimizer/plan/planmain.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,12 +114,12 @@ query_planner(PlannerInfo *root,
114114
* Anything parallel-restricted in the query tlist will be
115115
* dealt with later.) This is normally pretty silly, because
116116
* a Result-only plan would never be interesting to
117-
* parallelize. However, if force_parallel_mode is on, then
117+
* parallelize. However, if debug_parallel_query is on, then
118118
* we want to execute the Result in a parallel worker if
119119
* possible, so we must do this.
120120
*/
121121
if (root->glob->parallelModeOK &&
122-
force_parallel_mode != FORCE_PARALLEL_OFF)
122+
debug_parallel_query != DEBUG_PARALLEL_OFF)
123123
final_rel->consider_parallel =
124124
is_parallel_safe(root, parse->jointree->quals);
125125

src/backend/optimizer/plan/planner.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070

7171
/* GUC parameters */
7272
double cursor_tuple_fraction = DEFAULT_CURSOR_TUPLE_FRACTION;
73-
int force_parallel_mode = FORCE_PARALLEL_OFF;
73+
int debug_parallel_query = DEBUG_PARALLEL_OFF;
7474
bool parallel_leader_participation = true;
7575

7676
/* Hook for plugins to get control in planner() */
@@ -364,20 +364,20 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
364364
* true during plan creation if a Gather or Gather Merge plan is actually
365365
* created (cf. create_gather_plan, create_gather_merge_plan).
366366
*
367-
* However, if force_parallel_mode = on or force_parallel_mode = regress,
368-
* then we impose parallel mode whenever it's safe to do so, even if the
369-
* final plan doesn't use parallelism. It's not safe to do so if the
370-
* query contains anything parallel-unsafe; parallelModeOK will be false
371-
* in that case. Note that parallelModeOK can't change after this point.
372-
* Otherwise, everything in the query is either parallel-safe or
367+
* However, if debug_parallel_query = on or debug_parallel_query =
368+
* regress, then we impose parallel mode whenever it's safe to do so, even
369+
* if the final plan doesn't use parallelism. It's not safe to do so if
370+
* the query contains anything parallel-unsafe; parallelModeOK will be
371+
* false in that case. Note that parallelModeOK can't change after this
372+
* point. Otherwise, everything in the query is either parallel-safe or
373373
* parallel-restricted, and in either case it should be OK to impose
374374
* parallel-mode restrictions. If that ends up breaking something, then
375375
* either some function the user included in the query is incorrectly
376376
* labeled as parallel-safe or parallel-restricted when in reality it's
377377
* parallel-unsafe, or else the query planner itself has a bug.
378378
*/
379379
glob->parallelModeNeeded = glob->parallelModeOK &&
380-
(force_parallel_mode != FORCE_PARALLEL_OFF);
380+
(debug_parallel_query != DEBUG_PARALLEL_OFF);
381381

382382
/* Determine what fraction of the plan is likely to be scanned */
383383
if (cursorOptions & CURSOR_OPT_FAST_PLAN)
@@ -431,7 +431,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
431431
* Optionally add a Gather node for testing purposes, provided this is
432432
* actually a safe thing to do.
433433
*/
434-
if (force_parallel_mode != FORCE_PARALLEL_OFF && top_plan->parallel_safe)
434+
if (debug_parallel_query != DEBUG_PARALLEL_OFF && top_plan->parallel_safe)
435435
{
436436
Gather *gather = makeNode(Gather);
437437

@@ -449,7 +449,7 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions,
449449
gather->plan.righttree = NULL;
450450
gather->num_workers = 1;
451451
gather->single_copy = true;
452-
gather->invisible = (force_parallel_mode == FORCE_PARALLEL_REGRESS);
452+
gather->invisible = (debug_parallel_query == DEBUG_PARALLEL_REGRESS);
453453

454454
/*
455455
* Since this Gather has no parallel-aware descendants to signal to,

src/backend/utils/misc/guc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ static const unit_conversion time_unit_conversion_table[] =
186186
static const char *const map_old_guc_names[] = {
187187
"sort_mem", "work_mem",
188188
"vacuum_mem", "maintenance_work_mem",
189+
"force_parallel_mode", "debug_parallel_query",
189190
NULL
190191
};
191192

src/backend/utils/misc/guc_tables.c

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -360,16 +360,16 @@ static const struct config_enum_entry recovery_prefetch_options[] = {
360360
{NULL, 0, false}
361361
};
362362

363-
static const struct config_enum_entry force_parallel_mode_ F438 options[] = {
364-
{"off", FORCE_PARALLEL_OFF, false},
365-
{"on", FORCE_PARALLEL_ON, false},
366-
{"regress", FORCE_PARALLEL_REGRESS, false},
367-
{"true", FORCE_PARALLEL_ON, true},
368-
{"false", FORCE_PARALLEL_OFF, true},
369-
{"yes", FORCE_PARALLEL_ON, true},
370-
{"no", FORCE_PARALLEL_OFF, true},
371-
{"1", FORCE_PARALLEL_ON, true},
372-
{"0", FORCE_PARALLEL_OFF, true},
363+
static const struct config_enum_entry debug_parallel_query_options[] = {
364+
{"off", DEBUG_PARALLEL_OFF, false},
365+
{"on", DEBUG_PARALLEL_ON, false},
366+
{"regress", DEBUG_PARALLEL_REGRESS, false},
367+
{"true", DEBUG_PARALLEL_ON, true},
368+
{"false", DEBUG_PARALLEL_OFF, true},
369+
{"yes", DEBUG_PARALLEL_ON, true},
370+
{"no", DEBUG_PARALLEL_OFF, true},
371+
{"1", DEBUG_PARALLEL_ON, true},
372+
{"0", DEBUG_PARALLEL_OFF, true},
373373
{NULL, 0, false}
374374
};
375375

@@ -4852,13 +4852,15 @@ struct config_enum ConfigureNamesEnum[] =
48524852
},
48534853

48544854
{
4855-
{"force_parallel_mode", PGC_USERSET, DEVELOPER_OPTIONS,
4856-
gettext_noop("Forces use of parallel query facilities."),
4857-
gettext_noop("If possible, run query using a parallel worker and with parallel restrictions."),
4855+
{"debug_parallel_query", PGC_USERSET, DEVELOPER_OPTIONS,
4856+
gettext_noop("Forces the planner's use parallel query nodes."),
4857+
gettext_noop("This can be useful for testing the parallel query infrastructure "
4858+
"by forcing the planner to generate plans which contains nodes "
4859+
"which perform tuple communication between workers and the main process."),
48584860
GUC_NOT_IN_SAMPLE | GUC_EXPLAIN
48594861
},
4860-
&force_parallel_mode,
4861-
FORCE_PARALLEL_OFF, force_parallel_mode_options,
4862+
&debug_parallel_query,
4863+
DEBUG_PARALLEL_OFF, debug_parallel_query_options,
48624864
NULL, NULL, NULL
48634865
},
48644866

src/include/optimizer/optimizer.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,16 @@ extern bool is_pseudo_constant_for_index(PlannerInfo *root, Node *expr,
9999

100100
/* in plan/planner.c: */
101101

102-
/* possible values for force_parallel_mode */
102+
/* possible values for debug_parallel_query */
103103
typedef enum
104104
{
105-
FORCE_PARALLEL_OFF,
106-
FORCE_PARALLEL_ON,
107-
FORCE_PARALLEL_REGRESS
108-
} ForceParallelMode;
105+
DEBUG_PARALLEL_OFF,
106+
DEBUG_PARALLEL_ON,
107+
DEBUG_PARALLEL_REGRESS
108+
} DebugParallelMode;
109109

110110
/* GUC parameters */
111-
extern PGDLLIMPORT int force_parallel_mode;
111+
extern PGDLLIMPORT int debug_parallel_query;
112112
extern PGDLLIMPORT bool parallel_leader_participation;
113113

114114
extern struct PlannedStmt *planner(Query *parse, const char *query_string,

src/pl/plpgsql/src/pl_exec.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8066,7 +8066,7 @@ exec_save_simple_expr(PLpgSQL_expr *expr, CachedPlan *cplan)
80668066

80678067
/*
80688068
* Ordinarily, the plan node should be a simple Result. However, if
8069-
* force_parallel_mode is on, the planner might've stuck a Gather node
8069+
* debug_parallel_query is on, the planner might've stuck a Gather node
80708070
* atop that. The simplest way to deal with this is to look through the
80718071
* Gather node. The Gather node's tlist would normally contain a Var
80728072
* referencing the child node's output, but it could also be a Param, or

src/test/isolation/expected/deadlock-parallel.out

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@ lock_share
1515

1616
step e1l: SELECT lock_excl(1,x) FROM bigt LIMIT 1; <waiting ...>
1717
step e2l: SELECT lock_excl(2,x) FROM bigt LIMIT 1; <waiting ...>
18-
step d1a2: SET force_parallel_mode = on;
18+
step d1a2: SET debug_parallel_query = on;
1919
SET parallel_setup_cost = 0;
2020
SET parallel_tuple_cost = 0;
2121
SET min_parallel_table_scan_size = 0;
2222
SET parallel_leader_participation = off;
2323
SET max_parallel_workers_per_gather = 3;
2424
SELECT sum(lock_share(2,x)) FROM bigt; <waiting ...>
25-
step d2a1: SET force_parallel_mode = on;
25+
step d2a1: SET debug_parallel_query = on;
2626
SET parallel_setup_cost = 0;
2727
SET parallel_tuple_cost = 0;
2828
SET min_parallel_table_scan_size = 0;
2929
SET parallel_leader_participation = off;
3030
SET max_parallel_workers_per_gather = 3;
3131
SELECT sum(lock_share(1,x)) FROM bigt;
32-
SET force_parallel_mode = off;
32+
SET debug_parallel_query = off;
3333
RESET parallel_setup_cost;
3434
RESET parallel_tuple_cost;
3535
SELECT lock_share(3,x) FROM bigt LIMIT 1; <waiting ...>

src/test/isolation/specs/deadlock-parallel.spec

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
# and is incorrectly marked parallel-safe so that it can execute in a worker.
77

88
# Note that we explicitly override any global settings of isolation level
9-
# or force_parallel_mode, to ensure we're testing what we intend to.
9+
# or debug_parallel_query, to ensure we're testing what we intend to.
1010

1111
# Otherwise, this is morally equivalent to deadlock-soft.spec:
1212
# Four-process deadlock with two hard edges and two soft edges.
@@ -55,13 +55,13 @@ teardown
5555

5656
session d1
5757
setup { BEGIN isolation level repeatable read;
58-
SET force_parallel_mode = off;
58+
SET debug_parallel_query = off;
5959
SET deadlock_timeout = '10s';
6060
}
6161
# these locks will be taken in the leader, so they will persist:
6262
step d1a1 { SELECT lock_share(1,x), lock_excl(3,x) FROM bigt LIMIT 1; }
6363
# this causes all the parallel workers to take locks:
64-
step d1a2 { SET force_parallel_mode = on;
64+
step d1a2 { SET debug_parallel_query = on;
6565
SET parallel_setup_cost = 0;
6666
SET parallel_tuple_cost = 0;
6767
SET min_parallel_table_scan_size = 0;
@@ -72,29 +72,29 @@ step d1c { COMMIT; }
7272

7373
session d2
7474
setup { BEGIN isolation level repeatable read;
75-
SET force_parallel_mode = off;
75+
SET debug_parallel_query = off;
7676
SET deadlock_timeout = '10ms';
7777
}
7878
# this lock will be taken in the leader, so it will persist:
7979
step d2a2 { select lock_share(2,x) FROM bigt LIMIT 1; }
8080
# this causes all the parallel workers to take locks;
8181
# after which, make the leader take lock 3 to prevent client-driven deadlock
82-
step d2a1 { SET force_parallel_mode = on;
82+
step d2a1 { SET debug_parallel_query = on;
8383
SET parallel_setup_cost = 0;
8484
SET parallel_tuple_cost = 0;
8585
SET min_parallel_table_scan_size = 0;
8686
SET parallel_leader_participation = off;
8787
SET max_parallel_workers_per_gather = 3;
8888
SELECT sum(lock_share(1,x)) FROM bigt;
89-
SET force_parallel_mode = off;
89+
SET debug_parallel_query = off;
9090
RESET parallel_setup_cost;
9191
RESET parallel_tuple_cost;
9292
SELECT lock_share(3,x) FROM bigt LIMIT 1; }
9393
step d2c { COMMIT; }
9494

9595
session e1
9696
setup { BEGIN isolation level repeatable read;
97-
SET force_parallel_mode = on;
97+
SET debug_parallel_query = on;
9898
SET deadlock_timeout = '10s';
9999
}
100100
# this lock will be taken in a parallel worker, but we don't need it to persist
@@ -103,7 +103,7 @@ step e1c { COMMIT; }
103103

104104
session e2
105105
setup { BEGIN isolation level repeatable read;
106-
SET force_parallel_mode = on;
106+
SET debug_parallel_query = on;
107107
SET deadlock_timeout = '10s';
108108
}
109109
# this lock will be taken in a parallel worker, but we don't need it to persist

src/test/isolation/specs/serializable-parallel.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ step s2c { COMMIT; }
3535
session s3
3636
setup {
3737
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;
38-
SET force_parallel_mode = on;
38+
SET debug_parallel_query = on;
3939
}
4040
step s3r { SELECT id, balance FROM bank_account WHERE id IN ('X', 'Y') ORDER BY id; }
4141
step s3c { COMMIT; }

src/test/modules/libpq_pipeline/libpq_pipeline.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1760,9 +1760,9 @@ main(int argc, char **argv)
17601760
res = PQexec(conn, "SET lc_messages TO \"C\"");
17611761
if (PQresultStatus(res) != PGRES_COMMAND_OK)
17621762
pg_fatal("failed to set lc_messages: %s", PQerrorMessage(conn));
1763-
res = PQexec(conn, "SET force_parallel_mode = off");
1763+
res = PQexec(conn, "SET debug_parallel_query = off");
17641764
if (PQresultStatus(res) != PGRES_COMMAND_OK)
1765-
pg_fatal("failed to set force_parallel_mode: %s", PQerrorMessage(conn));
1765+
pg_fatal("failed to set debug_parallel_query: %s", PQerrorMessage(conn));
17661766

17671767
/* Set the trace file, if requested */
17681768
if (tracefile != NULL)

src/test/modules/test_oat_hooks/test_oat_hooks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ emit_audit_message(const char *type, const char *hook, char *action, char *objNa
233233
/*
234234
* Ensure that audit messages are not duplicated by only emitting them
235235
* from a leader process, not a worker process. This makes the test
236-
* results deterministic even if run with force_parallel_mode = regress.
236+
* results deterministic even if run with debug_parallel_query = regress.
237237
*/
238238
if (REGRESS_audit && !IsParallelWorker())
239239
{

src/test/regress/expected/multirangetypes.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3257,7 +3257,7 @@ select array[1,3] <@ arraymultirange(arrayrange(array[1,2], array[2,1]));
32573257
--
32583258
create type two_ints as (a int, b int);
32593259
create type two_ints_range as range (subtype = two_ints);
3260-
-- with force_parallel_mode on, this exercises tqueue.c's range remapping
3260+
-- with debug_parallel_query on, this exercises tqueue.c's range remapping
32613261
select *, row_to_json(upper(t)) as u from
32623262
(values (two_ints_multirange(two_ints_range(row(1,2), row(3,4)))),
32633263
(two_ints_multirange(two_ints_range(row(5,6), row(7,8))))) v(t);

src/test/regress/expected/rangetypes.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1743,7 +1743,7 @@ select array[1,3] <@ arrayrange(array[1,2], array[2,1]);
17431743
--
17441744
create type two_ints as (a int, b int);
17451745
create type two_ints_range as range (subtype = two_ints);
1746-
-- with force_parallel_mode on, this exercises tqueue.c's range remapping
1746+
-- with debug_parallel_query on, this exercises tqueue.c's range remapping
17471747
select *, row_to_json(upper(t)) as u from
17481748
(values (two_ints_range(row(1,2), row(3,4))),
17491749
(two_ints_range(row(5,6), row(7,8)))) v(t);

0 commit comments

Comments
 (0)
0