plywood
Version:
A query planner and executor
37 lines (36 loc) • 1.6 kB
JavaScript
import { __extends } from "tslib";
import { Set } from '../datatypes';
import { ChainableUnaryExpression, Expression, } from './baseExpression';
var DivideExpression = (function (_super) {
__extends(DivideExpression, _super);
function DivideExpression(parameters) {
var _this = _super.call(this, parameters, dummyObject) || this;
_this._ensureOp('divide');
_this._checkOperandTypes('NUMBER');
_this._checkExpressionTypes('NUMBER');
_this.type = 'NUMBER';
return _this;
}
DivideExpression.fromJS = function (parameters) {
return new DivideExpression(ChainableUnaryExpression.jsToValue(parameters));
};
DivideExpression.prototype._calcChainableUnaryHelper = function (operandValue, expressionValue) {
if (operandValue === null || expressionValue === null)
return null;
return Set.crossBinary(operandValue, expressionValue, function (a, b) { return (b !== 0 ? a / b : null); });
};
DivideExpression.prototype._getSQLChainableUnaryHelper = function (dialect, operandSQL, expressionSQL) {
return dialect.floatDivision(operandSQL, expressionSQL);
};
DivideExpression.prototype.specialSimplify = function () {
if (this.expression.equals(Expression.ZERO))
return Expression.NULL;
if (this.expression.equals(Expression.ONE))
return this.operand;
return this;
};
DivideExpression.op = 'Divide';
return DivideExpression;
}(ChainableUnaryExpression));
export { DivideExpression };
Expression.register(DivideExpression);