Skip to content

Instantly share code, notes, and snippets.

@cramja
Last active April 6, 2017 13:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cramja/570664a03caaeecfc4c2c6762510224b to your computer and use it in GitHub Desktop.
Save cramja/570664a03caaeecfc4c2c6762510224b to your computer and use it in GitHub Desktop.
For manipulating GPDB/ORCA optimization flags
#! /usr/#!/usr/bin/env python
import subprocess
xforms = \
[
"CXformAntiSemiJoinAntiSemiJoinNotInSwap",
"CXformAntiSemiJoinAntiSemiJoinSwap",
"CXformAntiSemiJoinInnerJoinSwap",
"CXformAntiSemiJoinNotInAntiSemiJoinNotInSwap",
"CXformAntiSemiJoinNotInAntiSemiJoinSwap",
"CXformAntiSemiJoinNotInInnerJoinSwap",
"CXformAntiSemiJoinNotInSemiJoinSwap",
"CXformAntiSemiJoinSemiJoinSwap",
"CXformCTEAnchor2Sequence",
"CXformCTEAnchor2TrivialSelect",
"CXformCollapseGbAgg",
"CXformCollapseProject",
"CXformDelete2DML",
"CXformDifference2LeftAntiSemiJoin",
"CXformDifferenceAll2LeftAntiSemiJoin",
"CXformExpandFullOuterJoin",
"CXformExpandNAryJoin",
"CXformExpandNAryJoinDP",
"CXformExpandNAryJoinMinCard",
"CXformGbAgg2Apply",
"CXformGbAggWithMDQA2Join",
"CXformInlineCTEConsumer",
"CXformInlineCTEConsumerUnderSelect",
"CXformInnerApply2InnerJoin",
"CXformInnerApply2InnerJoinNoCorrelations",
"CXformInnerApplyWithOuterKey2InnerJoin",
"CXformInnerJoin2BitmapIndexGetApply",
"CXformInnerJoin2DynamicBitmapIndexGetApply",
"CXformInnerJoin2DynamicIndexGetApply",
"CXformInnerJoin2IndexApply",
"CXformInnerJoin2IndexGetApply",
"CXformInnerJoin2PartialDynamicIndexGetApply",
"CXformInnerJoinAntiSemiJoinNotInSwap",
"CXformInnerJoinAntiSemiJoinSwap",
"CXformInnerJoinSemiJoinSwap",
"CXformInnerJoinWithInnerSelect2BitmapIndexGetApply",
"CXformInnerJoinWithInnerSelect2DynamicBitmapIndexGetApply",
"CXformInnerJoinWithInnerSelect2DynamicIndexGetApply",
"CXformInnerJoinWithInnerSelect2IndexGetApply",
"CXformInnerJoinWithInnerSelect2PartialDynamicIndexGetApply",
"CXformInsert2DML",
"CXformIntersect2Join",
"CXformIntersectAll2LeftSemiJoin",
"CXformJoinAssociativity",
"CXformJoinCommutativity",
"CXformJoinSwap",
"CXformLeftAntiSemiApply2LeftAntiSemiJoin",
"CXformLeftAntiSemiApply2LeftAntiSemiJoinNoCorrelations",
"CXformLeftAntiSemiApplyNotIn2LeftAntiSemiJoinNotIn",
"CXformLeftAntiSemiApplyNotIn2LeftAntiSemiJoinNotInNoCorrelations",
"CXformLeftAntiSemiJoin2CrossProduct",
"CXformLeftAntiSemiJoinNotIn2CrossProduct",
"CXformLeftOuter2InnerUnionAllLeftAntiSemiJoin",
"CXformLeftOuterApply2LeftOuterJoin",
"CXformLeftOuterApply2LeftOuterJoinNoCorrelations",
"CXformLeftSemiApply2LeftSemiJoin",
"CXformLeftSemiApply2LeftSemiJoinNoCorrelations",
"CXformLeftSemiApplyIn2LeftSemiJoin",
"CXformLeftSemiApplyIn2LeftSemiJoinNoCorrelations",
"CXformLeftSemiApplyInWithExternalCorrs2InnerJoin",
"CXformLeftSemiApplyWithExternalCorrs2InnerJoin",
"CXformLeftSemiJoin2CrossProduct",
"CXformLeftSemiJoin2InnerJoin",
"CXformLeftSemiJoin2InnerJoinUnderGb",
"CXformMaxOneRow2Assert",
"CXformProject2Apply",
"CXformPushDownLeftOuterJoin",
"CXformPushGbBelowJoin",
"CXformPushGbBelowSetOp",
"CXformPushGbBelowUnion",
"CXformPushGbBelowUnionAll",
"CXformPushGbDedupBelowJoin",
"CXformPushGbWithHavingBelowJoin",
"CXformSelect2Apply",
"CXformSelect2BitmapBoolOp",
"CXformSelect2DynamicBitmapBoolOp",
"CXformSelect2DynamicIndexGet",
"CXformSelect2IndexGet",
"CXformSelect2PartialDynamicIndexGet",
"CXformSemiJoinAntiSemiJoinNotInSwap",
"CXformSemiJoinAntiSemiJoinSwap",
"CXformSemiJoinInnerJoinSwap",
"CXformSemiJoinSemiJoinSwap",
"CXformSequenceProject2Apply",
"CXformSimplifyGbAgg",
"CXformSimplifyLeftOuterJoin",
"CXformSimplifyProjectWithSubquery",
"CXformSimplifySelectWithSubquery",
"CXformSimplifySubquery",
"CXformSplitDQA",
"CXformSplitGbAgg",
"CXformSplitGbAggDedup",
"CXformSplitLimit",
"CXformSubqJoin2Apply",
"CXformSubqNAryJoin2Apply",
"CXformSubqueryUnnest",
"CXformUnion2UnionAll",
"CXformUnnestTVF",
"CXformUpdate2DML"
]
failed = 0
for x in xforms:
query = "select disable_xform('{}');".format(x);
r = subprocess.call(["/usr/local/gpdb/bin/psql -p 15432 <<< \"{}\"".format(query)], shell=True)
if r != 0:
failed += 1
print x
print failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment