plywood
Version:
A query planner and executor
59 lines (58 loc) • 2.39 kB
JavaScript
import { __extends } from "tslib";
import { Set } from '../datatypes';
import { ChainableExpression, Expression } from './baseExpression';
var SubstrExpression = (function (_super) {
__extends(SubstrExpression, _super);
function SubstrExpression(parameters) {
var _this = _super.call(this, parameters, dummyObject) || this;
_this.position = parameters.position;
_this.len = parameters.len;
_this._ensureOp('substr');
_this._checkOperandTypes('STRING');
_this.type = _this.operand.type;
return _this;
}
SubstrExpression.fromJS = function (parameters) {
var value = ChainableExpression.jsToValue(parameters);
value.position = parameters.position;
value.len = parameters.len || parameters.length;
return new SubstrExpression(value);
};
SubstrExpression.prototype.valueOf = function () {
var value = _super.prototype.valueOf.call(this);
value.position = this.position;
value.len = this.len;
return value;
};
SubstrExpression.prototype.toJS = function () {
var js = _super.prototype.toJS.call(this);
js.position = this.position;
js.len = this.len;
return js;
};
SubstrExpression.prototype.equals = function (other) {
return _super.prototype.equals.call(this, other) && this.position === other.position && this.len === other.len;
};
SubstrExpression.prototype._toStringParameters = function (_indent) {
return [String(this.position), String(this.len)];
};
SubstrExpression.prototype._calcChainableHelper = function (operandValue) {
if (operandValue === null)
return null;
var _a = this, position = _a.position, len = _a.len;
return Set.crossUnary(operandValue, function (a) { return a.substr(position, len); });
};
SubstrExpression.prototype._getSQLChainableHelper = function (dialect, operandSQL) {
return dialect.substrExpression(operandSQL, this.position, this.len);
};
SubstrExpression.prototype.specialSimplify = function () {
var len = this.len;
if (len === 0)
return Expression.EMPTY_STRING;
return this;
};
SubstrExpression.op = 'Substr';
return SubstrExpression;
}(ChainableExpression));
export { SubstrExpression };
Expression.register(SubstrExpression);