68 {
70 {
71 return;
72 }
73 if (expr._op == 27)
74 {
76 return;
77 }
78 if (expr._op == 26)
79 {
80 bool flag = false;
82 if (expr._left
is BinaryNode)
83 {
86 {
87 return;
88 }
89 flag = true;
90 }
91 else
92 {
95 {
97 {
99 }
101 {
104 {
105 return;
106 }
107 flag = true;
108 }
109 }
110 }
111 if (expr._right
is BinaryNode)
112 {
115 {
116 return;
117 }
119 }
120 else
121 {
124 {
126 {
128 }
130 {
133 {
134 return;
135 }
137 }
138 }
139 }
140 if (!(flag &&
flag2))
141 {
142 ExpressionNode
expressionNode = (flag ? expr._right : expr._left);
144 }
145 return;
146 }
148 {
149 if (expr._left
is NameNode && expr._right
is ConstNode)
150 {
152 columnInfo.expr = ((columnInfo.expr ==
null) ? expr :
new BinaryNode(
_table, 26, expr,
columnInfo.expr));
153 if (expr._op == 7)
154 {
155 columnInfo.equalsOperator = true;
156 }
158 return;
159 }
160 if (expr._right
is NameNode && expr._left
is ConstNode)
161 {
162 ExpressionNode left = expr._left;
163 expr._left = expr._right;
164 expr._right = left;
165 switch (expr._op)
166 {
167 case 8:
168 expr._op = 9;
169 break;
170 case 9:
171 expr._op = 8;
172 break;
173 case 10:
174 expr._op = 11;
175 break;
176 case 11:
177 expr._op = 10;
178 break;
179 }
181 columnInfo2.expr = ((columnInfo2.expr ==
null) ? expr :
new BinaryNode(
_table, 26, expr,
columnInfo2.expr));
182 if (expr._op == 7)
183 {
184 columnInfo2.equalsOperator = true;
185 }
187 return;
188 }
189 }
191 }
bool _candidatesForBinarySearch
ColumnInfo[] _candidateColumns
void AnalyzeExpression(BinaryNode expr)
ExpressionNode _linearExpression
readonly DataTable _table
bool IsSupportedOperator(int op)
readonly ExpressionNode _expression