pg-mem
Version:
A memory version of postgres
100 lines (98 loc) • 4.17 kB
TypeScript
import type { _ISelection, IValue, _IIndex, _ISchema, _IDb, _Transaction, _SelectExplanation, _Explainer, Stats, nil, _IAlias, Row, _IAggregation } from '../interfaces-private';
import type { buildSelection } from './selection';
import type { buildAlias } from './alias';
import type { buildFilter } from './build-filter';
import type { buildGroupBy } from './aggregation';
import type { buildLimit } from './limit';
import type { buildUnion } from './union';
import type { buildOrderBy } from './order-by';
import type { buildDistinct } from './distinct';
import { Expr, SelectedColumn, LimitStatement, OrderByStatement, ExprRef } from 'pgsql-ast-parser';
interface Fns {
buildSelection: typeof buildSelection;
buildAlias: typeof buildAlias;
buildLimit: typeof buildLimit;
buildUnion: typeof buildUnion;
buildFilter: typeof buildFilter;
buildGroupBy: typeof buildGroupBy;
buildOrderBy: typeof buildOrderBy;
buildDistinct: typeof buildDistinct;
}
export declare function initialize(init: Fns): void;
export declare abstract class DataSourceBase implements _ISelection {
readonly ownerSchema: _ISchema;
abstract enumerate(t: _Transaction): Iterable<Row>;
abstract entropy(t: _Transaction): number;
abstract readonly columns: ReadonlyArray<IValue>;
abstract getColumn(column: string, nullIfNotFound?: boolean): IValue;
abstract hasItem(value: Row, t: _Transaction): boolean;
abstract getIndex(forValue: IValue): _IIndex | null | undefined;
abstract explain(e: _Explainer): _SelectExplanation;
abstract isOriginOf(a: IValue): boolean;
abstract stats(t: _Transaction): Stats | null;
abstract get isExecutionWithNoResult(): boolean;
isAggregation(): this is _IAggregation;
get db(): _IDb;
constructor(ownerSchema: _ISchema);
listColumns(): Iterable<IValue>;
listSelectableIdentities(): Iterable<IValue>;
select(select: (string | SelectedColumn)[] | nil): _ISelection;
selectAlias(alias: string): _IAlias | nil;
filter(filter: Expr | undefined | null): _ISelection;
groupBy(grouping: Expr[] | nil): _ISelection;
setAlias(alias?: string): _ISelection;
limit(limit: LimitStatement): _ISelection;
orderBy(orderBy: OrderByStatement[] | nil): _ISelection;
distinct(exprs?: Expr[]): _ISelection;
union(right: _ISelection): _ISelection;
}
export declare abstract class TransformBase extends DataSourceBase {
readonly base: _ISelection;
constructor(base: _ISelection);
get isExecutionWithNoResult(): boolean;
entropy(t: _Transaction): number;
isOriginOf(a: IValue): boolean;
}
export declare abstract class FilterBase extends TransformBase {
isAggregation(): this is _IAggregation;
constructor(_base: _ISelection);
get columns(): ReadonlyArray<IValue>;
selectAlias(alias: string): nil | _IAlias;
/**
private _columns: IValue[];
private _columnMappings: Map<IValue, IValue>;
get columns(): ReadonlyArray<IValue> {
this.initCols();
return this._columns;
// return this.base.columns;
}
private initCols() {
if (this._columns) {
return;
}
this._columns = [];
this._columnMappings = new Map();
for (const c of this.base.columns) {
const nc = c.setOrigin(this);
this._columns.push(nc);
this._columnMappings.set(c, nc);
}
}
getColumn(column: string, nullIfNotFound?: boolean): IValue {
if (!this.base) { // istanbul ignore next
throw new Error('Should not call .getColumn() on join');
}
if (!('columns' in this.base)) { // istanbul ignore next
throw new Error('Should not call getColumn() on table');
}
this.initCols();
const col = this.base.getColumn(column, nullIfNotFound);
return col && this._columnMappings.get(col);
}
*/
getColumn(column: string | ExprRef): IValue;
getColumn(column: string | ExprRef, nullIfNotFound?: boolean): IValue | nil;
getIndex(...forValue: IValue[]): _IIndex | null | undefined;
}
export {};
//# sourceMappingURL=transform-base.d.ts.map