1) Modify minIncCost of group:
Change its name to nullPropertyMinIncCost to represent the real meaning, and only initialize the get method of that member.
2) Fix cost calculation error
This error was caused by member referring to the same object, so later changes in the object affect the used object. Problem solved by creating new object for member associated with cost1.
3) Modify unittest
Adjust one of the property enforcement unittest to force the optimizer push order node below PNLJoin.
4) Change null property
Create a static member in PhysicProperty to represent null property. This avoid multiple call of default property constructor.
1) Modify minIncCost of group: Change its name to nullPropertyMinIncCost to represent the real meaning, and only initialize the get method of that member. 2) Fix cost calculation error This error was caused by member referring to the same object, so later changes in the object affect the used object. Problem solved by creating new object for member associated with cost1. 3) Modify unittest Adjust one of the property enforcement unittest to force the optimizer push order node below PNLJoin. 4) Change null property Create a static member in PhysicProperty to represent null property. This avoid multiple call of default property constructor.