|
@@ -267,6 +267,16 @@ public:
|
|
|
inline void resetTransformExtra(IInterface * _extra, unsigned depth);
|
|
|
};
|
|
|
|
|
|
+//The following couple of classes are here primarily to save memory.
|
|
|
+//It is preferrable not to artificially introduce extra classes, but one representative large example has
|
|
|
+//12M+ instances, and not including the tables/type save 16 and 8 bytes each. That quickly becomes a significant
|
|
|
+//amount of memory.
|
|
|
+//
|
|
|
+//The nodes with significant number of instances are (no_assign, no_select and annotations).
|
|
|
+//One further possibilitiy is to add a CHqlAssignExpression which could also remove the tables and type.
|
|
|
+//If any more class splitting is contemplated it would be worth revisiting in terms of policies.
|
|
|
+
|
|
|
+//This class calculates which tables the expression references to ensure it is evaluated in the correct conext.
|
|
|
class HQL_API CHqlExpressionWithTables : public CHqlExpression
|
|
|
{
|
|
|
public:
|