plywood
Version:
A query planner and executor
29 lines (28 loc) • 1.29 kB
JavaScript
import { __extends } from "tslib";
import { Set } from '../datatypes';
import { ChainableExpression, Expression } from './baseExpression';
var CardinalityExpression = (function (_super) {
__extends(CardinalityExpression, _super);
function CardinalityExpression(parameters) {
var _this = _super.call(this, parameters, dummyObject) || this;
_this._ensureOp('cardinality');
_this._checkOperandTypes('BOOLEAN', 'STRING', 'STRING_RANGE', 'NUMBER', 'NUMBER_RANGE', 'TIME', 'TIME_RANGE');
_this.type = 'NUMBER';
return _this;
}
CardinalityExpression.fromJS = function (parameters) {
return new CardinalityExpression(ChainableExpression.jsToValue(parameters));
};
CardinalityExpression.prototype._calcChainableHelper = function (operandValue) {
if (operandValue == null)
return null;
return operandValue instanceof Set ? operandValue.cardinality() : 1;
};
CardinalityExpression.prototype._getSQLChainableHelper = function (dialect, operandSQL) {
return "cardinality(".concat(operandSQL, ")");
};
CardinalityExpression.op = 'Cardinality';
return CardinalityExpression;
}(ChainableExpression));
export { CardinalityExpression };
Expression.register(CardinalityExpression);