feat: offsetFirstSkipRangeSyntax support

This commit is contained in:
Pavel
2025-05-15 13:32:07 +02:00
parent 06055a7c4c
commit 7ac6cfcf25
3 changed files with 8 additions and 0 deletions

View File

@@ -12,6 +12,9 @@ export function dumpSqlSelect(dmp: SqlDumper, cmd: Select) {
if (cmd.topRecords) {
if (!dmp.dialect.rangeSelect || dmp.dialect.offsetFetchRangeSyntax) dmp.put('^top %s ', cmd.topRecords);
}
if (cmd.range && dmp.dialect.offsetFirstSkipSyntax) {
dmp.put('^first %s ^skip %s ', cmd.range.limit, cmd.range.offset);
}
if (cmd.selectAll) {
dmp.put('* ');
}
@@ -52,6 +55,8 @@ export function dumpSqlSelect(dmp: SqlDumper, cmd: Select) {
if (cmd.range) {
if (dmp.dialect.offsetFetchRangeSyntax) {
dmp.put('^offset %s ^rows ^fetch ^next %s ^rows ^only', cmd.range.offset, cmd.range.limit);
} else if (dmp.dialect.offsetFirstSkipSyntax) {
//
} else if (dmp.dialect.offsetNotSupported) {
dmp.put('^limit %s', cmd.range.limit + cmd.range.offset);
} else {

View File

@@ -8,6 +8,7 @@ export interface SqlDialect {
topRecords?: boolean;
stringEscapeChar: string;
offsetFetchRangeSyntax?: boolean;
offsetFirstSkipSyntax?: boolean;
offsetNotSupported?: boolean;
quoteIdentifier(s: string): string;
fallbackDataType?: string;

View File

@@ -11,6 +11,8 @@ const dialect = {
anonymousPrimaryKey: false,
enableConstraintsPerTable: true,
stringAgg: true,
offsetFirstSkipSyntax: true,
quoteIdentifier(s) {
return `"${s}"`;
},