typeorm 0.3.25-dev.2bfa300 → 0.3.25-dev.413f0a6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/driver/oracle/OracleDriver.js +1 -1
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/sap/SapDriver.js +1 -1
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +13 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.js +7 -0
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/types/UpsertType.d.ts +1 -1
- package/browser/driver/types/UpsertType.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.d.ts +6 -0
- package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +17 -0
- package/browser/query-builder/InsertQueryBuilder.js +480 -156
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +1 -0
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +21 -18
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/driver/oracle/OracleDriver.js +1 -1
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/sap/SapDriver.js +1 -1
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +13 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/driver/spanner/SpannerDriver.js +7 -0
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/types/UpsertType.d.ts +1 -1
- package/driver/types/UpsertType.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/InsertOrUpdateOptions.d.ts +6 -0
- package/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +17 -0
- package/query-builder/InsertQueryBuilder.js +480 -156
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +1 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/SelectQueryBuilder.js +21 -18
- package/query-builder/SelectQueryBuilder.js.map +1 -1
|
@@ -1337,12 +1337,15 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1337
1337
|
// in the case if nothing is joined in the query builder we don't need to make two requests to get paginated results
|
|
1338
1338
|
// we can use regular limit / offset, that's why we add offset and limit construction here based on skip and take values
|
|
1339
1339
|
let offset = this.expressionMap.offset, limit = this.expressionMap.limit;
|
|
1340
|
-
if (
|
|
1341
|
-
|
|
1340
|
+
if (offset === undefined &&
|
|
1341
|
+
limit === undefined &&
|
|
1342
1342
|
this.expressionMap.joinAttributes.length === 0) {
|
|
1343
1343
|
offset = this.expressionMap.skip;
|
|
1344
1344
|
limit = this.expressionMap.take;
|
|
1345
1345
|
}
|
|
1346
|
+
// Helper functions to check if values are set (including 0)
|
|
1347
|
+
const hasLimit = limit !== undefined && limit !== null;
|
|
1348
|
+
const hasOffset = offset !== undefined && offset !== null;
|
|
1346
1349
|
if (this.connection.driver.options.type === "mssql") {
|
|
1347
1350
|
// Due to a limitation in SQL Server's parser implementation it does not support using
|
|
1348
1351
|
// OFFSET or FETCH NEXT without an ORDER BY clause being provided. In cases where the
|
|
@@ -1350,59 +1353,59 @@ class SelectQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
1350
1353
|
// have no effect on the query planner or on the order of the results returned.
|
|
1351
1354
|
// https://dba.stackexchange.com/a/193799
|
|
1352
1355
|
let prefix = "";
|
|
1353
|
-
if ((
|
|
1356
|
+
if ((hasLimit || hasOffset) &&
|
|
1354
1357
|
Object.keys(this.expressionMap.allOrderBys).length <= 0) {
|
|
1355
1358
|
prefix = " ORDER BY (SELECT NULL)";
|
|
1356
1359
|
}
|
|
1357
|
-
if (
|
|
1360
|
+
if (hasLimit && hasOffset)
|
|
1358
1361
|
return (prefix +
|
|
1359
1362
|
" OFFSET " +
|
|
1360
1363
|
offset +
|
|
1361
1364
|
" ROWS FETCH NEXT " +
|
|
1362
1365
|
limit +
|
|
1363
1366
|
" ROWS ONLY");
|
|
1364
|
-
if (
|
|
1367
|
+
if (hasLimit)
|
|
1365
1368
|
return (prefix + " OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY");
|
|
1366
|
-
if (
|
|
1369
|
+
if (hasOffset)
|
|
1367
1370
|
return prefix + " OFFSET " + offset + " ROWS";
|
|
1368
1371
|
}
|
|
1369
1372
|
else if (DriverUtils_1.DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
1370
1373
|
this.connection.driver.options.type === "aurora-mysql" ||
|
|
1371
1374
|
this.connection.driver.options.type === "sap" ||
|
|
1372
1375
|
this.connection.driver.options.type === "spanner") {
|
|
1373
|
-
if (
|
|
1376
|
+
if (hasLimit && hasOffset)
|
|
1374
1377
|
return " LIMIT " + limit + " OFFSET " + offset;
|
|
1375
|
-
if (
|
|
1378
|
+
if (hasLimit)
|
|
1376
1379
|
return " LIMIT " + limit;
|
|
1377
|
-
if (
|
|
1380
|
+
if (hasOffset)
|
|
1378
1381
|
throw new OffsetWithoutLimitNotSupportedError_1.OffsetWithoutLimitNotSupportedError();
|
|
1379
1382
|
}
|
|
1380
1383
|
else if (DriverUtils_1.DriverUtils.isSQLiteFamily(this.connection.driver)) {
|
|
1381
|
-
if (
|
|
1384
|
+
if (hasLimit && hasOffset)
|
|
1382
1385
|
return " LIMIT " + limit + " OFFSET " + offset;
|
|
1383
|
-
if (
|
|
1386
|
+
if (hasLimit)
|
|
1384
1387
|
return " LIMIT " + limit;
|
|
1385
|
-
if (
|
|
1388
|
+
if (hasOffset)
|
|
1386
1389
|
return " LIMIT -1 OFFSET " + offset;
|
|
1387
1390
|
}
|
|
1388
1391
|
else if (this.connection.driver.options.type === "oracle") {
|
|
1389
|
-
if (
|
|
1392
|
+
if (hasLimit && hasOffset)
|
|
1390
1393
|
return (" OFFSET " +
|
|
1391
1394
|
offset +
|
|
1392
1395
|
" ROWS FETCH NEXT " +
|
|
1393
1396
|
limit +
|
|
1394
1397
|
" ROWS ONLY");
|
|
1395
|
-
if (
|
|
1398
|
+
if (hasLimit)
|
|
1396
1399
|
return " FETCH NEXT " + limit + " ROWS ONLY";
|
|
1397
|
-
if (
|
|
1400
|
+
if (hasOffset)
|
|
1398
1401
|
return " OFFSET " + offset + " ROWS";
|
|
1399
1402
|
}
|
|
1400
1403
|
else {
|
|
1401
|
-
if (
|
|
1404
|
+
if (hasLimit && hasOffset)
|
|
1402
1405
|
return " LIMIT " + limit + " OFFSET " + offset;
|
|
1403
|
-
if (
|
|
1406
|
+
if (hasLimit)
|
|
1404
1407
|
return " LIMIT " + limit;
|
|
1405
|
-
if (
|
|
1408
|
+
if (hasOffset)
|
|
1406
1409
|
return " OFFSET " + offset;
|
|
1407
1410
|
}
|
|
1408
1411
|
return "";
|