@itwin/core-backend 5.1.1 → 5.1.3-experimental.1
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/CHANGELOG.md +11 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +19 -5
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/CatalogDb.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/FontFile.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +22 -2
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +23 -3
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelDbFonts.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/ImageSourceConversion.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/LockControl.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/SheetIndex.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +57 -10
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +76 -13
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/FrameGeometry.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/cjs/annotations/TextBlockLayout.js.map +1 -1
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +1 -1
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
- package/lib/cjs/internal/FontFileImpl.js.map +1 -1
- package/lib/cjs/internal/HubMock.js.map +1 -1
- package/lib/cjs/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/cjs/internal/NativePlatform.js.map +1 -1
- package/lib/cjs/internal/NoLocks.js.map +1 -1
- package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/cross-package.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/BackendLoggerCategory.js.map +1 -1
- package/lib/esm/BisCoreSchema.js.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +20 -6
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/CatalogDb.js.map +1 -1
- package/lib/esm/Category.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChannelControl.js.map +1 -1
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/CodeService.js.map +1 -1
- package/lib/esm/CodeSpecs.js.map +1 -1
- package/lib/esm/ConcurrentQuery.js.map +1 -1
- package/lib/esm/CustomViewState3dCreator.js.map +1 -1
- package/lib/esm/DevTools.js.map +1 -1
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementGraphics.js.map +1 -1
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/EntityReferences.js.map +1 -1
- package/lib/esm/ExportGraphics.js.map +1 -1
- package/lib/esm/ExternalSource.js.map +1 -1
- package/lib/esm/FontFile.js.map +1 -1
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +22 -2
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +23 -3
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelDbFonts.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
- package/lib/esm/IModelJsFs.js.map +1 -1
- package/lib/esm/ImageSourceConversion.js.map +1 -1
- package/lib/esm/IpcHost.js.map +1 -1
- package/lib/esm/LineStyle.js.map +1 -1
- package/lib/esm/LocalHub.js.map +1 -1
- package/lib/esm/LocalhostIpcHost.js.map +1 -1
- package/lib/esm/LockControl.js.map +1 -1
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/Model.js.map +1 -1
- package/lib/esm/NativeAppStorage.js.map +1 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/NavigationRelationship.js.map +1 -1
- package/lib/esm/PromiseMemoizer.js.map +1 -1
- package/lib/esm/PropertyStore.js.map +1 -1
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/RpcBackend.js.map +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/Schema.js.map +1 -1
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/SchemaUtils.js.map +1 -1
- package/lib/esm/SheetIndex.js.map +1 -1
- package/lib/esm/SqliteChangesetReader.js.map +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +57 -10
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +77 -14
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/FrameGeometry.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockGeometry.js.map +1 -1
- package/lib/esm/annotations/TextBlockLayout.js.map +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/domains/FunctionalElements.js.map +1 -1
- package/lib/esm/domains/FunctionalSchema.js.map +1 -1
- package/lib/esm/domains/GenericElements.js.map +1 -1
- package/lib/esm/domains/GenericSchema.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +1 -1
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/ElementLRUCache.js.map +1 -1
- package/lib/esm/internal/FontFileImpl.js.map +1 -1
- package/lib/esm/internal/HubMock.js.map +1 -1
- package/lib/esm/internal/IModelDbFontsImpl.js.map +1 -1
- package/lib/esm/internal/NativePlatform.js.map +1 -1
- package/lib/esm/internal/NoLocks.js.map +1 -1
- package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/cross-package.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsImpl.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
- package/lib/esm/rpc/multipart.js.map +1 -1
- package/lib/esm/rpc/tracing.js.map +1 -1
- package/lib/esm/rpc/web/logging.js.map +1 -1
- package/lib/esm/rpc/web/request.js.map +1 -1
- package/lib/esm/rpc/web/response.js.map +1 -1
- package/lib/esm/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/AdvancedEqual.js.map +1 -1
- package/lib/esm/test/AnnotationTestUtils.js.map +1 -1
- package/lib/esm/test/AttachDb.test.js.map +1 -1
- package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
- package/lib/esm/test/GeometryTestUtil.js.map +1 -1
- package/lib/esm/test/IModelHost.test.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/ImageSourceConversion.test.js.map +1 -1
- package/lib/esm/test/IpcHost.test.js.map +1 -1
- package/lib/esm/test/KnownTestLocations.js.map +1 -1
- package/lib/esm/test/PrintElementTree.js.map +1 -1
- package/lib/esm/test/PropertyDb.test.js.map +1 -1
- package/lib/esm/test/RevisionUtility.js.map +1 -1
- package/lib/esm/test/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/SequentialLogMatcher.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/annotations/Fields.test.js.map +1 -1
- package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/annotations/TextBlock.test.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -1
- package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -1
- package/lib/esm/test/categories/Category.test.js.map +1 -1
- package/lib/esm/test/codespec/CodeSpec.test.js.map +1 -1
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDbTestHelper.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
- package/lib/esm/test/ecdb/SqliteStatement.test.js.map +1 -1
- package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestGenerator.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestParser.js.map +1 -1
- package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementAspect.test.js.map +1 -1
- package/lib/esm/test/element/ElementDependencyGraph.test.js.map +1 -1
- package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
- package/lib/esm/test/element/ExcludedElements.test.js.map +1 -1
- package/lib/esm/test/element/ExternalSource.test.js.map +1 -1
- package/lib/esm/test/element/NullStructArray.test.js.map +1 -1
- package/lib/esm/test/element/UrlLink.test.js.map +1 -1
- package/lib/esm/test/font/FontFile.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/Rebase.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/Rebase.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/Rebase.test.js +172 -0
- package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -0
- package/lib/esm/test/imageData.js.map +1 -1
- package/lib/esm/test/imodel/ElementTreeWalker.test.js.map +1 -1
- package/lib/esm/test/imodel/GetTextureImage.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/imodel/ProjectExtents.test.js.map +1 -1
- package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -1
- package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -1
- package/lib/esm/test/index.js.map +1 -1
- package/lib/esm/test/misc/DevTools.test.js.map +1 -1
- package/lib/esm/test/misc/EntitySubClasses.test.js.map +1 -1
- package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
- package/lib/esm/test/misc/PromiseMemoizer.test.js.map +1 -1
- package/lib/esm/test/native/DgnDbWorker.test.js.map +1 -1
- package/lib/esm/test/rpc/response.test.js.map +1 -1
- package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
- package/lib/esm/test/schema/FunctionalDomain.test.js.map +1 -1
- package/lib/esm/test/schema/GenericDomain.test.js.map +1 -1
- package/lib/esm/test/schema/IModelSchemaContext.test.js.map +1 -1
- package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +10 -10
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/CustomViewState3dCreator.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/Drawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/ElementMesh.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryChangeEvents.test.js.map +1 -1
- package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/InlineGeometryPartReferences.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/NativeAppStorage.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderTimeline.test.js.map +1 -1
- package/lib/esm/test/standalone/SQLiteDb.test.js.map +1 -1
- package/lib/esm/test/standalone/SchemaUtils.test.js.map +1 -1
- package/lib/esm/test/standalone/SectionDrawing.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/Setting.test.js.map +1 -1
- package/lib/esm/test/standalone/Settings.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Texture.test.js.map +1 -1
- package/lib/esm/test/standalone/TileCache.test.js.map +1 -1
- package/lib/esm/test/standalone/TileTree.test.js.map +1 -1
- package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Settings.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlAst.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlAst.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ECSqlExpr\r\n */\r\n\r\nimport { assert } from \"chai\";\r\nimport {\r\n AssignmentExpr,\r\n BetweenExpr,\r\n BinaryBooleanExpr, BinaryValueExpr,\r\n CastExpr,\r\n ClassNameExpr,\r\n CteBlockExpr,\r\n CteBlockRefExpr,\r\n CteExpr,\r\n DeleteStatementExpr,\r\n DerivedPropertyExpr,\r\n ECSqlOptionsClauseExpr,\r\n Expr,\r\n ExprType,\r\n FromClauseExpr,\r\n FuncCallExpr,\r\n GroupByClauseExpr,\r\n HavingClauseExpr,\r\n IIFExpr,\r\n InExpr,\r\n InsertStatementExpr,\r\n IsNullExpr,\r\n IsOfTypeExpr,\r\n LikeExpr,\r\n LimitClauseExpr,\r\n LiteralExpr,\r\n LiteralValueType,\r\n MemberFuncCallExpr,\r\n NotExpr,\r\n OrderByClauseExpr,\r\n OrderBySpecExpr,\r\n ParameterExpr,\r\n PropertyNameExpr,\r\n QualifiedJoinExpr,\r\n SearchCaseExpr,\r\n SelectExpr,\r\n SelectionClauseExpr,\r\n SelectStatementExpr,\r\n SetClauseExpr,\r\n StatementExpr,\r\n SubqueryExpr,\r\n SubqueryRefExpr,\r\n SubqueryTestExpr,\r\n TableValuedFuncExpr,\r\n UnaryValueExpr,\r\n UpdateStatementExpr,\r\n UsingRelationshipJoinExpr,\r\n WhereClauseExp,\r\n} from \"@itwin/ecsql-common\";\r\nimport { ECDb, ECDbOpenMode, IModelHost } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { DbResult } from \"@itwin/core-bentley\";\r\n\r\ndescribe(\"ECSql Abstract Syntax Tree\", () => {\r\n let ecdb: ECDb;\r\n\r\n async function toNormalizeECSql(ecsql: string) {\r\n return (await parseECSql(ecsql)).toECSql();\r\n }\r\n\r\n async function parseECSql(ecsql: string) {\r\n const parseTreeECSql = `PRAGMA PARSE_TREE(\"${ecsql}\") ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`;\r\n if (true) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n return ecdb.withPreparedStatement(parseTreeECSql, (stmt) => {\r\n if (DbResult.BE_SQLITE_ROW !== stmt.step()) {\r\n throw new Error(\"unable to get parse tree.\");\r\n }\r\n return StatementExpr.deserialize(JSON.parse(stmt.getValue(0).getString()));\r\n });\r\n } else {\r\n const reader = ecdb.createQueryReader(parseTreeECSql);\r\n if (await reader.step()) {\r\n return StatementExpr.deserialize(JSON.parse(reader.current[0]));\r\n }\r\n throw new Error(\"unable to get parse tree.\");\r\n }\r\n }\r\n\r\n function printTree(expr: Expr, indent: number = 0) {\r\n process.stdout.write(`${\"\".padEnd(indent, \".\")}${expr.expType}${\"\".padEnd(30 - (indent + expr.expType.length), \" \")}${expr.toECSql()}\\n`);\r\n indent += 3;\r\n for (const child of expr.children)\r\n printTree(child, indent);\r\n }\r\n\r\n before(async () => {\r\n await IModelHost.startup();\r\n ecdb = new ECDb();\r\n ecdb.openDb(IModelTestUtils.resolveAssetFile(\"test.bim\"), ECDbOpenMode.ReadWrite);\r\n });\r\n\r\n after(async () => {\r\n ecdb.closeDb();\r\n });\r\n it(\"parse (|, &, <<, >>, +, -, %, /, *) binary & unary\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT (1 & 2 ) | (3 << 4 ) >> (5/ 6) * (7 + 8) + (4 % 9) + (-10) + (+20) - (~45)\",\r\n expectedECSql: \"SELECT (((1 & 2) | (3 << 4)) >> ((((((5 / 6) * (7 + 8)) + (4 % 9)) + -10) + +20) - ~45))\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse DATE, TIME & TIMESTAMP\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT TIMESTAMP '2013-02-09T12:00:00'\",\r\n expectedECSql: \"SELECT TIMESTAMP '2013-02-09T12:00:00'\",\r\n },\r\n {\r\n orignalECSql: \"SELECT DATE '2012-01-18'\",\r\n expectedECSql: \"SELECT DATE '2012-01-18'\",\r\n },\r\n {\r\n orignalECSql: \"SELECT TIME '13:35:16'\",\r\n expectedECSql: \"SELECT TIME '13:35:16'\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse NULL, NUMBER, STRING, TRUE, FALSE & ||\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT TRUE, FALSE\",\r\n expectedECSql: \"SELECT TRUE, FALSE\",\r\n },\r\n {\r\n orignalECSql: \"SELECT NULL\",\r\n expectedECSql: \"SELECT NULL\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 3.14159265358\",\r\n expectedECSql: \"SELECT 3.14159265358\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 314159\",\r\n expectedECSql: \"SELECT 314159\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 'Hello, World'\",\r\n expectedECSql: \"SELECT 'Hello, World'\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 'Hello'|| ',' || 'World'\",\r\n expectedECSql: \"SELECT (('Hello' || ',') || 'World')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse (!=, =, >, <, >=, <=, OR, AND)\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF((1 != 2) OR (4 = 5) AND ( 4 > 8 ) OR (4 < 5) OR (4 <= 5) AND ( 4 >= 6 ), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(((((1 <> 2) OR ((4 = 5) AND (4 > 8))) OR (4 < 5)) OR ((4 <= 5) AND (4 >= 6))), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse CASE-WHEN-THEN\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT CASE WHEN 4>5 THEN NULL WHEN 1 IS NOT NULL THEN 'Hello' ELSE 'Bye' END\",\r\n expectedECSql: \"SELECT CASE WHEN (4 > 5) THEN NULL WHEN (1 IS NOT NULL) THEN 'Hello' ELSE 'Bye' END\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse [NOT] LIKE\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"select IIF(('Hello, World' LIKE '\\\\%World' escape '\\\\') , 2, 3)\",\r\n expectedECSql: \"SELECT IIF('Hello, World' LIKE '\\\\%World' ESCAPE '\\\\', 2, 3)\",\r\n },\r\n {\r\n orignalECSql: \"select IIF(('Hello, World' LIKE '%World') , 2, 3)\",\r\n expectedECSql: \"SELECT IIF('Hello, World' LIKE '%World', 2, 3)\",\r\n }\r\n ,\r\n {\r\n orignalECSql: \"select IIF(('Hello, World' NOT LIKE '%World') , 2, 3)\",\r\n expectedECSql: \"SELECT IIF('Hello, World' NOT LIKE '%World', 2, 3)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse [NOT] IN(select|list)\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF( 3 IN (SELECT 1 AS N UNION SELECT 2), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(3 IN (SELECT 1 [N] UNION SELECT 2), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF( 3 IN (1,2,3), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(3 IN (1, 2, 3), 'True', 'False')\",\r\n }\r\n ,\r\n {\r\n orignalECSql: \"SELECT IIF( 3 NOT IN (1,2,3), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(3 NOT IN (1, 2, 3), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse IS [NOT] NULL\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF( NULL IS NULL, 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NULL IS NULL), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF( NULL IS NOT NULL, 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NULL IS NOT NULL), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF( 1 IS NOT NULL, 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((1 IS NOT NULL), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse IS [NOT] (type[,...])\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF( 3 IS (ALL meta.ECClassDef, ONLY meta.ECPropertyDef), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(3 IS (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF( 3 IS NOT (ALL meta.ECClassDef, ONLY meta.ECPropertyDef), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(3 IS NOT (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse (NOT expr)\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF(NOT 3, 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NOT 3), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF( (NOT (NOT (NOT (NOT 3)))), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NOT (NOT (NOT (NOT 3)))), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse [NOT] EXISTS (<subquery>)\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT IIF(EXISTS(SELECT 1), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(EXISTS(SELECT 1), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF(EXISTS(WITH temp(x) AS (SELECT 1) SELECT * FROM temp), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF(EXISTS(WITH [temp]([x]) AS (SELECT 1) SELECT [temp].[x] FROM [temp]), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF(NOT EXISTS(SELECT 1), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NOT EXISTS(SELECT 1)), 'True', 'False')\",\r\n },\r\n {\r\n orignalECSql: \"SELECT IIF(NOT EXISTS(WITH temp(x) AS (SELECT 1) SELECT * FROM temp), 'True', 'False')\",\r\n expectedECSql: \"SELECT IIF((NOT EXISTS(WITH [temp]([x]) AS (SELECT 1) SELECT [temp].[x] FROM [temp])), 'True', 'False')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse CAST(<expr> AS [TEXT | INTEGER | REAL | BLOB | TIMESTAMP])\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT CAST(1 AS TEXT)\",\r\n expectedECSql: \"SELECT CAST(1 AS TEXT)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT CAST(1 AS INTEGER)\",\r\n expectedECSql: \"SELECT CAST(1 AS INTEGER)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT CAST(1 AS REAL)\",\r\n expectedECSql: \"SELECT CAST(1 AS REAL)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT CAST(1 AS BLOB)\",\r\n expectedECSql: \"SELECT CAST(1 AS BLOB)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT CAST(1 AS TIMESTAMP)\",\r\n expectedECSql: \"SELECT CAST(1 AS TIMESTAMP)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse SELECT DISTINCT|ALL/SUM(DISTINCT|ALL <expr>) \", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT ECInstanceId FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT DISTINCT ECInstanceId FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT DISTINCT [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT ALL ECInstanceId FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT ALL [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT SUM(DISTINCT ECInstanceId) FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT SUM(DISTINCT [ECInstanceId]) FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT SUM(ALL ECInstanceId) FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT SUM(ALL [ECInstanceId]) FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT SUM(ECInstanceId) FROM meta.ECClassDef\",\r\n expectedECSql: \"SELECT SUM([ECInstanceId]) FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse func(args...)\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT INSTR('First', 'Second')\",\r\n expectedECSql: \"SELECT INSTR('First', 'Second')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse ECSQLOPTIONS\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef ECSQLOPTIONS NoECClassIdFilter ReadonlyPropertiesAreUpdatable X=3\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] ECSQLOPTIONS NoECClassIdFilter ReadonlyPropertiesAreUpdatable X = 3\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse Subquery\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT d.a FROM (SELECT b.Name a FROM meta.ECClassDef b) d\",\r\n expectedECSql: \"SELECT [d].[a] FROM (SELECT [b].[Name] [a] FROM [ECDbMeta].[ECClassDef] [b]) [d]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse LIMIT <expr> [OFFSET <expr>]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef LIMIT 10+33\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] LIMIT (10 + 33)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef LIMIT 10+33 OFFSET 44\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] LIMIT (10 + 33) OFFSET 44\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse GROUP BY [expr...] HAVING [expr...]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef GROUP BY Name\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] GROUP BY [Name]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef GROUP BY [Name] HAVING COUNT(*)>2\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] GROUP BY [Name] HAVING (COUNT(*) > 2)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse ORDER BY [expr...]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef ORDER BY Name ASC, ECInstanceId DESC\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] ORDER BY [Name] ASC, [ECInstanceId] DESC\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef ORDER BY NAME, DISPLAYLABEL\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] ORDER BY [NAME], [DISPLAYLABEL]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse CTE\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"WITH RECURSIVE c(i) AS (SELECT 1 UNION SELECT i+1 FROM c WHERE i < 10 ORDER BY 1) SELECT i FROM c\",\r\n expectedECSql: \"WITH RECURSIVE [c]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [c] WHERE ([i] < 10) ORDER BY 1) SELECT [i] FROM [c]\",\r\n },\r\n {\r\n orignalECSql: \"WITH c(i) AS (SELECT 1 UNION SELECT i+1 FROM c WHERE i < 10 ORDER BY 1) SELECT i FROM c\",\r\n expectedECSql: \"WITH [c]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [c] WHERE ([i] < 10) ORDER BY 1) SELECT [i] FROM [c]\",\r\n },\r\n {\r\n orignalECSql: \"WITH c(i) AS (SELECT 1 UNION SELECT i+1 FROM c WHERE i < 10 ORDER BY 1), d(i) AS (SELECT 1 UNION SELECT i+1 FROM d WHERE i < 100 ORDER BY 1) SELECT * FROM c,d\",\r\n expectedECSql: \"WITH [c]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [c] WHERE ([i] < 10) ORDER BY 1), [d]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [d] WHERE ([i] < 100) ORDER BY 1) SELECT [c].[i], [d].[i] FROM [c], [d]\",\r\n },\r\n {\r\n orignalECSql: \"WITH c(a,b,c) AS (SELECT ECInstanceId, ECClassId, Name FROM meta.ECClassDef) SELECT * FROM c\",\r\n expectedECSql: \"WITH [c]([a], [b], [c]) AS (SELECT [ECInstanceId], [ECClassId], [Name] FROM [ECDbMeta].[ECClassDef]) SELECT [c].[a], [c].[b], [c].[c] FROM [c]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse $, $->prop\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT $ FROM Meta.ECClassDef\",\r\n expectedECSql: \"SELECT $ FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT $->[Name], $-> DisplayLabel, $ -> Nothing FROM Meta.ECClassDef\",\r\n expectedECSql: \"SELECT $->[Name], $->[DisplayLabel], $->[Nothing] FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n // {\r\n // orignalECSql: \"SELECT $->Name, $-> DisplayLabel, $ -> Nothing FROM Meta.ECClassDef WHERE $->Name LIKE '%Hellp' ORDER BY $->ECInstanceId DESC\",\r\n // expectedECSql: \"SELECT $->[Name], $->[DisplayLabel], $->[Nothing] FROM [ECDbMeta].[ECClassDef] WHERE $->[Name] LIKE '%Hellp' ORDER BY $->[ECInstanceId] DESC\",\r\n // },\r\n {\r\n orignalECSql: \"SELECT e.$->[Name], e.$-> DisplayLabel, e.$ -> Nothing FROM Meta.ECClassDef e\",\r\n expectedECSql: \"SELECT [e].$->[Name], [e].$->[DisplayLabel], [e].$->[Nothing] FROM [ECDbMeta].[ECClassDef] [e]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse ?, :<param-name>\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT ?\",\r\n expectedECSql: \"SELECT ?\",\r\n },\r\n {\r\n orignalECSql: \"SELECT :param1\",\r\n expectedECSql: \"SELECT :param1\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse <from> JOIN <to> USING rel [FORWARD|BACKWARD]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef JOIN meta.ECPropertyDef USING meta.ClassOwnsLocalProperties\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] JOIN [ECDbMeta].[ECPropertyDef] USING [ECDbMeta].[ClassOwnsLocalProperties]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM bis.Element a JOIN bis.Element b USING bis.ElementOwnsChildElements FORWARD\",\r\n expectedECSql: \"SELECT 1 FROM [BisCore].[Element] [a] JOIN [BisCore].[Element] [b] USING [BisCore].[ElementOwnsChildElements] FORWARD\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM bis.Element a JOIN bis.Element b USING bis.ElementOwnsChildElements BACKWARD\",\r\n expectedECSql: \"SELECT 1 FROM [BisCore].[Element] [a] JOIN [BisCore].[Element] [b] USING [BisCore].[ElementOwnsChildElements] BACKWARD\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse <from> [INNER] [OUTER] JOIN <to> [ON <exp>]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] INNER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef INNER JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] INNER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse <from> RIGHT [OUTER] JOIN <to> [ON <exp>]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef RIGHT JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] RIGHT OUTER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef RIGHT OUTER JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] RIGHT OUTER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse <from> FULL [OUTER] JOIN <to> [ON <exp>]\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef FULL JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] FULL OUTER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM meta.ECClassDef FULL OUTER JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] FULL OUTER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse UNION | UNION ALL | INTERSECT | EXCEPT\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT a.ECInstanceId FROM meta.ECClassDef a UNION SELECT b.ECInstanceId FROM meta.ECPropertyDef b\",\r\n expectedECSql: \"SELECT [a].[ECInstanceId] FROM [ECDbMeta].[ECClassDef] [a] UNION SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT a.ECInstanceId FROM meta.ECClassDef a UNION ALL SELECT b.ECInstanceId FROM meta.ECPropertyDef b\",\r\n expectedECSql: \"SELECT [a].[ECInstanceId] FROM [ECDbMeta].[ECClassDef] [a] UNION ALL SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT a.ECInstanceId FROM meta.ECClassDef a INTERSECT SELECT b.ECInstanceId FROM meta.ECPropertyDef b\",\r\n expectedECSql: \"SELECT [a].[ECInstanceId] FROM [ECDbMeta].[ECClassDef] [a] INTERSECT SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT a.ECInstanceId FROM meta.ECClassDef a EXCEPT SELECT b.ECInstanceId FROM meta.ECPropertyDef b\",\r\n expectedECSql: \"SELECT [a].[ECInstanceId] FROM [ECDbMeta].[ECClassDef] [a] EXCEPT SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]\",\r\n },\r\n\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse cte without columns\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"WITH cte AS (SELECT * FROM meta.ECClassDef) SELECT * FROM cte\",\r\n expectedECSql: \"WITH [cte] AS (SELECT [ECInstanceId], [ECClassId], [Schema], [Name], [DisplayLabel], [Description], [Type], [Modifier], [CustomAttributeContainerType], [RelationshipStrength], [RelationshipStrengthDirection] FROM [ECDbMeta].[ECClassDef]) SELECT [ECInstanceId], [ECClassId], [Schema], [Name], [DisplayLabel], [Description], [Type], [Modifier], [CustomAttributeContainerType], [RelationshipStrength], [RelationshipStrengthDirection] FROM [cte]\",\r\n },\r\n {\r\n orignalECSql: \"WITH cte AS (SELECT * FROM meta.ECClassDef) SELECT cte.ECInstanceId FROM cte\",\r\n expectedECSql: \"WITH [cte] AS (SELECT [ECInstanceId], [ECClassId], [Schema], [Name], [DisplayLabel], [Description], [Type], [Modifier], [CustomAttributeContainerType], [RelationshipStrength], [RelationshipStrengthDirection] FROM [ECDbMeta].[ECClassDef]) SELECT [cte].[ECInstanceId] FROM [cte]\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse SELECT (<subquery>) FROM\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT (SELECT b.ECInstanceId FROM meta.ECPropertyDef b) AS S FROM [ECDbMeta].[ECClassDef] a\",\r\n expectedECSql: \"SELECT (SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]) [S] FROM [ECDbMeta].[ECClassDef] [a]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT (WITH C(iD) AS (SELECT b.ECInstanceId FROM meta.ECPropertyDef b) SELECT * FROM C) AS S FROM [ECDbMeta].[ECClassDef] a\",\r\n expectedECSql: \"SELECT (WITH [C]([iD]) AS (SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]) SELECT [C].[iD] FROM [C]) [S] FROM [ECDbMeta].[ECClassDef] [a]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT (SELECT 1 UNION SELECT 2) FROM meta.ECClassDef a\",\r\n expectedECSql: \"SELECT (SELECT 1 UNION SELECT 2) FROM [ECDbMeta].[ECClassDef] [a]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] [a] WHERE (SELECT [b].[ECInstanceId] FROM meta.ECPropertyDef b) = 1\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] [a] WHERE ((SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]) = 1)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] [a] WHERE (WITH temp(Id) AS (SELECT [b].[ECInstanceId] FROM meta.ECPropertyDef b) SELECT * FROM temp) = 1\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef] [a] WHERE ((WITH [temp]([Id]) AS (SELECT [b].[ECInstanceId] FROM [ECDbMeta].[ECPropertyDef] [b]) SELECT [temp].[Id] FROM [temp]) = 1)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse ALL | ONLY <classname>\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef]\",\r\n expectedECSql: \"SELECT 1 FROM [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM ONLY [ECDbMeta].[ECClassDef]\",\r\n expectedECSql: \"SELECT 1 FROM ONLY [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM ALL [ECDbMeta].[ECClassDef]\",\r\n expectedECSql: \"SELECT 1 FROM ALL [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM +ALL [ECDbMeta].[ECClassDef]\",\r\n expectedECSql: \"SELECT 1 FROM +ALL [ECDbMeta].[ECClassDef]\",\r\n },\r\n {\r\n orignalECSql: \"SELECT 1 FROM +ONLY [ECDbMeta].[ECClassDef]\",\r\n expectedECSql: \"SELECT 1 FROM +ONLY [ECDbMeta].[ECClassDef]\",\r\n },\r\n\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse tablevalue function FROM json1.json_tree()\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"select * from json1.json_tree('{}') where key='gravity'\",\r\n expectedECSql: \"SELECT [key], [value], [type], [atom], [parent], [fullkey], [path] FROM [json1].[json_tree]('{}') WHERE ([key] = 'gravity')\",\r\n },\r\n {\r\n orignalECSql: \"select s.key, s.[value], s.type from json1.json_tree('{}') s where s.key='gravity'\",\r\n expectedECSql: \"SELECT [s].[key], [s].[value], [s].[type] FROM [json1].[json_tree]('{}') [s] WHERE ([s].[key] = 'gravity')\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse SELECT, WHERE, FROM, GROUP BY, HAVING, ORDER BY, LIMIT & ECSQLOPTIONS\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"select count(*) from bis.element where codevalue lIKE '%s' group by ecclassid having count(*)>0 order by UserLabel limit 1 offset 10 ECSQLOPTIONS x=3\",\r\n expectedECSql: \"SELECT COUNT(*) FROM [BisCore].[Element] WHERE [codevalue] LIKE '%s' GROUP BY [ecclassid] HAVING (COUNT(*) > 0) ORDER BY [UserLabel] LIMIT 1 OFFSET 10 ECSQLOPTIONS x = 3\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse INSERT\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"INSERT INTO Bis.Subject(ECInstanceId) VALUES(1)\",\r\n expectedECSql: \"INSERT INTO [BisCore].[Subject] ([ECInstanceId]) VALUES(1)\",\r\n },\r\n {\r\n orignalECSql: \"INSERT INTO ONLY Bis.Subject(ECInstanceId) VALUES(1)\",\r\n expectedECSql: \"INSERT INTO [BisCore].[Subject] ([ECInstanceId]) VALUES(1)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse DELETE\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"DELETE FROM Bis.Subject WHERE ECInstanceId = 1\",\r\n expectedECSql: \"DELETE FROM [BisCore].[Subject] WHERE ([ECInstanceId] = 1)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse UPDATE\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"UPDATE Bis.Subject SET CodeValue ='hello' WHERE ECInstanceId =1\",\r\n expectedECSql: \"UPDATE [BisCore].[Subject] SET [CodeValue] = 'hello' WHERE ([ECInstanceId] = 1)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse NAVIGATION_VALUE\", async () => {\r\n const tests = [\r\n {\r\n orignalECSql: \"SELECT NAVIGATION_VALUE(Bis.Element.Model, 1)\",\r\n expectedECSql: \"SELECT NAVIGATION_VALUE([BisCore].[Element].[Model], 1)\",\r\n },\r\n {\r\n orignalECSql: \"SELECT NAVIGATION_VALUE(Bis.Element.Model, 1, 2)\",\r\n expectedECSql: \"SELECT NAVIGATION_VALUE([BisCore].[Element].[Model], 1, 2)\",\r\n },\r\n ];\r\n for (const test of tests) {\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.orignalECSql));\r\n assert.equal(test.expectedECSql, await toNormalizeECSql(test.expectedECSql));\r\n }\r\n });\r\n it(\"parse complex query\", async () => {\r\n const ecsql = `\r\n WITH RECURSIVE\r\n f0(i) AS (SELECT 1 UNION SELECT i+1 FROM f0 WHERE i < 10 ORDER BY 1),\r\n f1(i) AS (SELECT 3.14159265358),\r\n f2(i) AS (SELECT IIF((1 != 2) OR (4 = 5) AND ( 4 > 8 ) OR (4 < 5) OR (4 <= 5) AND ( 4 >= 6 ), 'True', 'False') i),\r\n f3(i) AS (SELECT 1 FROM bis.Element t0 JOIN bis.Element t1 USING bis.ElementOwnsChildElements FORWARD),\r\n f4(i) AS (SELECT 1 FROM bis.Element t0 JOIN bis.Element t1 USING bis.ElementOwnsChildElements BACKWARD),\r\n f5(i) AS (\r\n SELECT 1 FROM meta.ECClassDef\r\n JOIN meta.ECPropertyDef ON ECPropertyDef.Class.Id = ECClassDef.ECInstanceId\r\n WHERE ECClassDef.ECInstanceId = :param1\r\n )\r\n SELECT\r\n (1 & 2 ) | (3 << 4 ) >> (5/ 6) * (7 + 8) + (4 % 9) + (-10) + (+20) - (~45) c0,\r\n TIMESTAMP '2013-02-09T12:00:00' c1,\r\n DATE '2012-01-18' c2,\r\n TIME '13:35:16' c3,\r\n TRUE c4,\r\n FALSE c5,\r\n 3.14159265358 c6,\r\n 314159 c7,\r\n 'Hello, World' c8,\r\n 'Hello'|| ',' || 'World' c9,\r\n IIF((1 != 2) OR (4 = 5) AND ( 4 > 8 ) OR (4 < 5) OR (4 <= 5) AND ( 4 >= 6 ), 'True', 'False') c10,\r\n CASE WHEN 4>5 THEN NULL WHEN 1 IS NOT NULL THEN 'Hello' ELSE 'Bye' END c11,\r\n IIF(('Hello, World' LIKE '\\\\%World' escape '\\\\') , 2, 3) c12,\r\n IIF(('Hello, World' LIKE '%World') , 2, 3) c13,\r\n IIF(('Hello, World' NOT LIKE '%World') , 2, 3) c14,\r\n IIF( 3 IN (SELECT 1 AS N UNION SELECT 2), 'True', 'False') c15,\r\n IIF( 3 IN (1,2,3), 'True', 'False') c16,\r\n IIF( 3 NOT IN (1,2,3), 'True', 'False') c17,\r\n IIF( NULL IS NULL, 'True', 'False') c18,\r\n IIF( NULL IS NOT NULL, 'True', 'False') c19,\r\n IIF( 1 IS NOT NULL, 'True', 'False') c20,\r\n IIF( 3 IS (ALL meta.ECClassDef, ONLY meta.ECPropertyDef), 'True', 'False') c21,\r\n IIF( 3 IS NOT (ALL meta.ECClassDef, ONLY meta.ECPropertyDef), 'True', 'False') c22,\r\n IIF(NOT 3, 'True', 'False') c23,\r\n IIF( (NOT (NOT (NOT (NOT 3)))), 'True', 'False') c24,\r\n IIF(EXISTS(SELECT 1), 'True', 'False') c25,\r\n IIF(NOT EXISTS(SELECT 1), 'True', 'False') c26,\r\n CAST(1 AS TEXT) c27,\r\n CAST(1 AS INTEGER) c28,\r\n CAST(1 AS REAL) c29,\r\n CAST(1 AS BLOB) c30,\r\n CAST(1 AS TIMESTAMP) c31,\r\n INSTR('First', 'Second') c32,\r\n f0.i c33,\r\n f1.i c34,\r\n f2.i c35,\r\n k0.ECInstanceId c36\r\n FROM f0, f1, f2, f3, f4, f5, meta.ECClassDef k0, (\r\n SELECT ECInstanceId FROM meta.ECClassDef\r\n UNION\r\n SELECT DISTINCT ECInstanceId FROM meta.ECClassDef\r\n UNION ALL\r\n SELECT ALL ECInstanceId FROM meta.ECClassDef\r\n EXCEPT\r\n SELECT SUM(DISTINCT ECInstanceId) FROM meta.ECClassDef\r\n INTERSECT\r\n SELECT SUM(ECInstanceId) FROM meta.ECClassDef GROUP BY ECClassId HAVING COUNT(*)> 1\r\n ) k1\r\n WHERE f0.i = f1.i AND k0.ECInstanceId = ? + 2\r\n GROUP BY k0.ECClassId,k0.DisplayLabel HAVING COUNT(*)> 1\r\n ORDER BY k0.Name ASC, k0.ECInstanceId DESC\r\n LIMIT 33 OFFSET ? + :param2\r\n ECSQLOPTIONS NoECClassIdFilter ReadonlyPropertiesAreUpdatable X=3`;\r\n /** expected result (indented for readablity)\r\n * WITH RECURSIVE\r\n [f0]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [f0] WHERE ([i] < 10) ORDER BY 1),\r\n [f1]([i]) AS (SELECT 3.14159265358),\r\n [f2]([i]) AS (SELECT IIF(((((1 <> 2) OR ((4 = 5) AND (4 > 8))) OR (4 < 5)) OR ((4 <= 5) AND (4 >= 6))), 'True', 'False') [i]),\r\n [f3]([i]) AS (SELECT 1 FROM [BisCore].[Element] [t0] JOIN [BisCore].[Element] [t1] USING [BisCore].[ElementOwnsChildElements] FORWARD),\r\n [f4]([i]) AS (SELECT 1 FROM [BisCore].[Element] [t0] JOIN [BisCore].[Element] [t1] USING [BisCore].[ElementOwnsChildElements] BACKWARD),\r\n [f5]([i]) AS (\r\n SELECT 1 FROM [ECDbMeta].[ECClassDef]\r\n INNER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId])\r\n WHERE ([ECClassDef].[ECInstanceId] = :param1)\r\n )\r\n SELECT\r\n (((1 & 2) | (3 << 4)) >> ((((((5 / 6) * (7 + 8)) + (4 % 9)) + -10) + +20) - ~45)) [c0],\r\n TIMESTAMP '2013-02-09T12:00:00' [c1],\r\n DATE '2012-01-18' [c2],\r\n TIME '13:35:16' [c3],\r\n TRUE [c4],\r\n FALSE [c5],\r\n 3.14159265358 [c6],\r\n 314159 [c7],\r\n 'Hello, World' [c8],\r\n (('Hello' || ',') || 'World') [c9],\r\n IIF(((((1 <> 2) OR ((4 = 5) AND (4 > 8))) OR (4 < 5)) OR ((4 <= 5) AND (4 >= 6))), 'True', 'False') [c10],\r\n CASE WHEN (4 > 5) THEN NULL WHEN (1 IS NOT NULL) THEN 'Hello' ELSE 'Bye' END [c11],\r\n IIF('Hello, World' LIKE '\\%World' ESCAPE '\\', 2, 3) [c12],\r\n IIF('Hello, World' LIKE '%World', 2, 3) [c13],\r\n IIF('Hello, World' NOT LIKE '%World', 2, 3) [c14],\r\n IIF(3 IN (SELECT 1 [N] UNION SELECT 2), 'True', 'False') [c15],\r\n IIF(3 IN (1, 2, 3), 'True', 'False') [c16], IIF(3 NOT IN (1, 2, 3), 'True', 'False') [c17],\r\n IIF((NULL IS NULL), 'True', 'False') [c18], IIF((NULL IS NOT NULL), 'True', 'False') [c19],\r\n IIF((1 IS NOT NULL), 'True', 'False') [c20],\r\n IIF(3 IS (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False') [c21],\r\n IIF(3 IS NOT (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False') [c22],\r\n IIF((NOT 3), 'True', 'False') [c23], IIF((NOT (NOT (NOT (NOT 3)))), 'True', 'False') [c24],\r\n IIF(EXISTS(SELECT 1), 'True', 'False') [c25], IIF((NOT EXISTS(SELECT 1)), 'True', 'False') [c26],\r\n CAST(1 AS TEXT) [c27],\r\n CAST(1 AS INTEGER) [c28],\r\n CAST(1 AS REAL) [c29],\r\n CAST(1 AS BLOB) [c30],\r\n CAST(1 AS TIMESTAMP) [c31],\r\n INSTR('First', 'Second') [c32],\r\n [f0].[i] [c33],\r\n [f1].[i] [c34],\r\n [f2].[i] [c35],\r\n [k0].[ECInstanceId] [c36]\r\n FROM [f0], [f1], [f2], [f3], [f4], [f5], [ECDbMeta].[ECClassDef] [k0],\r\n (SELECT [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\r\n UNION SELECT DISTINCT [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\r\n UNION ALL SELECT ALL [ECInstanceId] FROM [ECDbMeta].[ECClassDef]\r\n EXCEPT SELECT SUM(DISTINCT [ECInstanceId]) FROM [ECDbMeta].[ECClassDef]\r\n INTERSECT SELECT SUM([ECInstanceId]) FROM [ECDbMeta].[ECClassDef]\r\n GROUP BY [ECClassId] HAVING (COUNT(*) > 1)) [k1]\r\n WHERE (([f0].[i] = [f1].[i]) AND ([k0].[ECInstanceId] = (? + 2))\r\n )\r\n GROUP BY [k0].[ECClassId], [k0].[DisplayLabel]\r\n HAVING (COUNT(*) > 1)\r\n ORDER BY [k0].[Name] ASC, [k0].[ECInstanceId] DESC LIMIT 33 OFFSET (? + :param2)\r\n ECSQLOPTIONS NoECClassIdFilter ReadonlyPropertiesAreUpdatable X = 3\r\n */\r\n const expected = \"WITH RECURSIVE [f0]([i]) AS (SELECT 1 UNION SELECT ([i] + 1) FROM [f0] WHERE ([i] < 10) ORDER BY 1), [f1]([i]) AS (SELECT 3.14159265358), [f2]([i]) AS (SELECT IIF(((((1 <> 2) OR ((4 = 5) AND (4 > 8))) OR (4 < 5)) OR ((4 <= 5) AND (4 >= 6))), 'True', 'False') [i]), [f3]([i]) AS (SELECT 1 FROM [BisCore].[Element] [t0] JOIN [BisCore].[Element] [t1] USING [BisCore].[ElementOwnsChildElements] FORWARD), [f4]([i]) AS (SELECT 1 FROM [BisCore].[Element] [t0] JOIN [BisCore].[Element] [t1] USING [BisCore].[ElementOwnsChildElements] BACKWARD), [f5]([i]) AS (SELECT 1 FROM [ECDbMeta].[ECClassDef] INNER JOIN [ECDbMeta].[ECPropertyDef] ON ([ECPropertyDef].[Class].[Id] = [ECClassDef].[ECInstanceId]) WHERE ([ECClassDef].[ECInstanceId] = :param1)) SELECT (((1 & 2) | (3 << 4)) >> ((((((5 / 6) * (7 + 8)) + (4 % 9)) + -10) + +20) - ~45)) [c0], TIMESTAMP '2013-02-09T12:00:00' [c1], DATE '2012-01-18' [c2], TIME '13:35:16' [c3], TRUE [c4], FALSE [c5], 3.14159265358 [c6], 314159 [c7], 'Hello, World' [c8], (('Hello' || ',') || 'World') [c9], IIF(((((1 <> 2) OR ((4 = 5) AND (4 > 8))) OR (4 < 5)) OR ((4 <= 5) AND (4 >= 6))), 'True', 'False') [c10], CASE WHEN (4 > 5) THEN NULL WHEN (1 IS NOT NULL) THEN 'Hello' ELSE 'Bye' END [c11], IIF('Hello, World' LIKE '\\\\%World' ESCAPE '\\\\', 2, 3) [c12], IIF('Hello, World' LIKE '%World', 2, 3) [c13], IIF('Hello, World' NOT LIKE '%World', 2, 3) [c14], IIF(3 IN (SELECT 1 [N] UNION SELECT 2), 'True', 'False') [c15], IIF(3 IN (1, 2, 3), 'True', 'False') [c16], IIF(3 NOT IN (1, 2, 3), 'True', 'False') [c17], IIF((NULL IS NULL), 'True', 'False') [c18], IIF((NULL IS NOT NULL), 'True', 'False') [c19], IIF((1 IS NOT NULL), 'True', 'False') [c20], IIF(3 IS (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False') [c21], IIF(3 IS NOT (ALL [ECDbMeta].[ECClassDef], ONLY [ECDbMeta].[ECPropertyDef]), 'True', 'False') [c22], IIF((NOT 3), 'True', 'False') [c23], IIF((NOT (NOT (NOT (NOT 3)))), 'True', 'False') [c24], IIF(EXISTS(SELECT 1), 'True', 'False') [c25], IIF((NOT EXISTS(SELECT 1)), 'True', 'False') [c26], CAST(1 AS TEXT) [c27], CAST(1 AS INTEGER) [c28], CAST(1 AS REAL) [c29], CAST(1 AS BLOB) [c30], CAST(1 AS TIMESTAMP) [c31], INSTR('First', 'Second') [c32], [f0].[i] [c33], [f1].[i] [c34], [f2].[i] [c35], [k0].[ECInstanceId] [c36] FROM [f0], [f1], [f2], [f3], [f4], [f5], [ECDbMeta].[ECClassDef] [k0], (SELECT [ECInstanceId] FROM [ECDbMeta].[ECClassDef] UNION SELECT DISTINCT [ECInstanceId] FROM [ECDbMeta].[ECClassDef] UNION ALL SELECT ALL [ECInstanceId] FROM [ECDbMeta].[ECClassDef] EXCEPT SELECT SUM(DISTINCT [ECInstanceId]) FROM [ECDbMeta].[ECClassDef] INTERSECT SELECT SUM([ECInstanceId]) FROM [ECDbMeta].[ECClassDef] GROUP BY [ECClassId] HAVING (COUNT(*) > 1)) [k1] WHERE (([f0].[i] = [f1].[i]) AND ([k0].[ECInstanceId] = (? + 2))) GROUP BY [k0].[ECClassId], [k0].[DisplayLabel] HAVING (COUNT(*) > 1) ORDER BY [k0].[Name] ASC, [k0].[ECInstanceId] DESC LIMIT 33 OFFSET (? + :param2) ECSQLOPTIONS NoECClassIdFilter ReadonlyPropertiesAreUpdatable X = 3\";\r\n assert.equal(expected, await toNormalizeECSql(ecsql));\r\n });\r\n describe(\"test methods\", () => {\r\n it(\"test Expr.findInstancesOf<T>()\", async () => {\r\n const stmt = new SelectStatementExpr(\r\n new SelectExpr(\r\n new SelectionClauseExpr([\r\n new DerivedPropertyExpr(\r\n new PropertyNameExpr(\"ECInstanceId\")),\r\n new DerivedPropertyExpr(\r\n new PropertyNameExpr(\"CodeValue\"))]),\r\n \"ALL\",\r\n new FromClauseExpr([\r\n new ClassNameExpr(\"bis\", \"Element\"),\r\n ]),\r\n new WhereClauseExp(\r\n new BinaryBooleanExpr(\r\n \"=\",\r\n new PropertyNameExpr(\"ECInstanceId\"),\r\n new LiteralExpr(LiteralValueType.Raw, \"1\")))),\r\n );\r\n const expected = \"SELECT ALL [ECInstanceId], [CodeValue] FROM [bis].[Element] WHERE ([ECInstanceId] = 1)\";\r\n assert.equal(stmt.toECSql(), expected);\r\n assert.equal(stmt.findInstancesOf<SelectExpr>(SelectExpr).length, 1);\r\n assert.equal(stmt.findInstancesOf<SelectionClauseExpr>(SelectionClauseExpr).length, 1);\r\n assert.equal(stmt.findInstancesOf<DerivedPropertyExpr>(DerivedPropertyExpr).length, 2);\r\n assert.equal(stmt.findInstancesOf<PropertyNameExpr>(PropertyNameExpr).length, 3);\r\n assert.equal(stmt.findInstancesOf<WhereClauseExp>(WhereClauseExp).length, 1);\r\n assert.equal(stmt.findInstancesOf<BinaryBooleanExpr>(BinaryBooleanExpr).length, 1);\r\n assert.equal(stmt.findInstancesOf<LiteralExpr>(LiteralExpr).length, 1);\r\n assert.equal(stmt.findInstancesOf<ClassNameExpr>(ClassNameExpr).length, 1);\r\n assert.equal(stmt.findInstancesOf<FromClauseExpr>(FromClauseExpr).length, 1);\r\n });\r\n it(\"test Expr.traverse()\", async () => {\r\n const stmt = new SelectStatementExpr(\r\n new SelectExpr(\r\n new SelectionClauseExpr([\r\n new DerivedPropertyExpr(\r\n new PropertyNameExpr(\"ECInstanceId\")),\r\n new DerivedPropertyExpr(\r\n new PropertyNameExpr(\"CodeValue\"))]),\r\n undefined,\r\n new FromClauseExpr([\r\n new ClassNameExpr(\"bis\", \"Element\"),\r\n ]),\r\n new WhereClauseExp(\r\n new BinaryBooleanExpr(\r\n \"=\",\r\n new PropertyNameExpr(\"ECInstanceId\"),\r\n new ParameterExpr()))),\r\n );\r\n const expected = \"SELECT [ECInstanceId], [CodeValue] FROM [bis].[Element] WHERE ([ECInstanceId] = ?)\";\r\n assert.equal(stmt.toECSql(), expected);\r\n const exprs: Expr[] = [];\r\n stmt.traverse((expr) => {\r\n exprs.push(expr);\r\n });\r\n assert.equal(exprs[0].expType, ExprType.SelectStatement);\r\n assert.equal(exprs[1].expType, ExprType.Select);\r\n assert.equal(exprs[2].expType, ExprType.SelectionClause);\r\n assert.equal(exprs[3].expType, ExprType.DerivedProperty);\r\n assert.equal(exprs[4].expType, ExprType.PropertyName);\r\n assert.equal(exprs[5].expType, ExprType.DerivedProperty);\r\n assert.equal(exprs[6].expType, ExprType.PropertyName);\r\n assert.equal(exprs[7].expType, ExprType.FromClause);\r\n assert.equal(exprs[8].expType, ExprType.ClassName);\r\n assert.equal(exprs[9].expType, ExprType.WhereClause);\r\n assert.equal(exprs[10].expType, ExprType.BinaryBoolean);\r\n assert.equal(exprs[11].expType, ExprType.PropertyName);\r\n assert.equal(exprs[12].expType, ExprType.Parameter);\r\n assert.equal(exprs.length, 13);\r\n });\r\n it(\"test Expr.type\", async () => {\r\n assert.equal(ExprType.Assignment, AssignmentExpr.type);\r\n assert.equal(ExprType.Between, BetweenExpr.type);\r\n assert.equal(ExprType.BinaryBoolean, BinaryBooleanExpr.type);\r\n assert.equal(ExprType.BinaryValue, BinaryValueExpr.type);\r\n assert.equal(ExprType.Cast, CastExpr.type);\r\n assert.equal(ExprType.ClassName, ClassNameExpr.type);\r\n assert.equal(ExprType.Cte, CteExpr.type);\r\n assert.equal(ExprType.CteBlock, CteBlockExpr.type);\r\n assert.equal(ExprType.CteBlockRef, CteBlockRefExpr.type);\r\n assert.equal(ExprType.DeleteStatement, DeleteStatementExpr.type);\r\n assert.equal(ExprType.DerivedProperty, DerivedPropertyExpr.type);\r\n assert.equal(ExprType.ECSqlOptionsClause, ECSqlOptionsClauseExpr.type);\r\n assert.equal(ExprType.FromClause, FromClauseExpr.type);\r\n assert.equal(ExprType.FuncCall, FuncCallExpr.type);\r\n assert.equal(ExprType.GroupByClause, GroupByClauseExpr.type);\r\n assert.equal(ExprType.HavingClause, HavingClauseExpr.type);\r\n assert.equal(ExprType.IIF, IIFExpr.type);\r\n assert.equal(ExprType.In, InExpr.type);\r\n assert.equal(ExprType.InsertStatement, InsertStatementExpr.type);\r\n assert.equal(ExprType.IsNull, IsNullExpr.type);\r\n assert.equal(ExprType.IsOfType, IsOfTypeExpr.type);\r\n assert.equal(ExprType.Like, LikeExpr.type);\r\n assert.equal(ExprType.LimitClause, LimitClauseExpr.type);\r\n assert.equal(ExprType.Literal, LiteralExpr.type);\r\n assert.equal(ExprType.MemberFuncCall, MemberFuncCallExpr.type);\r\n assert.equal(ExprType.Not, NotExpr.type);\r\n assert.equal(ExprType.OrderByClause, OrderByClauseExpr.type);\r\n assert.equal(ExprType.OrderBySpec, OrderBySpecExpr.type);\r\n assert.equal(ExprType.Parameter, ParameterExpr.type);\r\n assert.equal(ExprType.PropertyName, PropertyNameExpr.type);\r\n assert.equal(ExprType.QualifiedJoin, QualifiedJoinExpr.type);\r\n assert.equal(ExprType.SearchCase, SearchCaseExpr.type);\r\n assert.equal(ExprType.Select, SelectExpr.type);\r\n assert.equal(ExprType.SelectionClause, SelectionClauseExpr.type);\r\n assert.equal(ExprType.SelectStatement, SelectStatementExpr.type);\r\n assert.equal(ExprType.SetClause, SetClauseExpr.type);\r\n assert.equal(ExprType.Subquery, SubqueryExpr.type);\r\n assert.equal(ExprType.SubqueryRef, SubqueryRefExpr.type);\r\n assert.equal(ExprType.SubqueryTest, SubqueryTestExpr.type);\r\n assert.equal(ExprType.TableValuedFunc, TableValuedFuncExpr.type);\r\n assert.equal(ExprType.Unary, UnaryValueExpr.type);\r\n assert.equal(ExprType.UpdateStatement, UpdateStatementExpr.type);\r\n assert.equal(ExprType.UsingRelationshipJoin, UsingRelationshipJoinExpr.type);\r\n assert.equal(ExprType.WhereClause, WhereClauseExp.type);\r\n });\r\n it.skip(\"test print tree\", async () => {\r\n const ecsql = \"select el.ECInstanceId as id, count(*) as instances from bis.element el where el.codevalue lIKE '%s' group by el.ecclassid having count(*)>0 order by el.UserLabel limit 1 offset 10 ECSQLOPTIONS x=3\";\r\n const selectStmt = await parseECSql(ecsql);\r\n printTree(selectStmt);\r\n\r\n });\r\n it(\"test ClassNameExpr.fromECSql()\", async () => {\r\n assert.equal(ClassNameExpr.fromECSql(\"+all Bis.Element\").toECSql(), \"+ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"+all Bis:Element\").toECSql(), \"+ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"+only Bis.Element\").toECSql(), \"+ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"+only Bis:Element\").toECSql(), \"+ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + all Bis.Element \").toECSql(), \"+ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + all Bis:Element \").toECSql(), \"+ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only Bis.Element \").toECSql(), \"+ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only Bis:Element \").toECSql(), \"+ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" all Bis.Element \").toECSql(), \"ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" all Bis:Element \").toECSql(), \"ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" only Bis.Element \").toECSql(), \"ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" only Bis:Element \").toECSql(), \"ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"all Bis.Element\").toECSql(), \"ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"all Bis:Element\").toECSql(), \"ALL [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"only Bis.Element\").toECSql(), \"ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"only Bis:Element\").toECSql(), \"ONLY [Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"Bis:Element\").toECSql(), \"[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"Bis.Element\").toECSql(), \"[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"[Bis]:[Element]\").toECSql(), \"[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"[Bis].[Element]\").toECSql(), \"[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"tbl.Bis:Element\").toECSql(), \"[tbl].[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"tbl.Bis.Element\").toECSql(), \"[tbl].[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"[tbl].[Bis]:[Element]\").toECSql(), \"[tbl].[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\"[tbl]:[Bis].[Element]\").toECSql(), \"[tbl].[Bis].[Element]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only Bis.Element as el\").toECSql(), \"+ONLY [Bis].[Element] [el]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only Bis:Element el \").toECSql(), \"+ONLY [Bis].[Element] [el]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only tbl:Bis.Element as el\").toECSql(), \"+ONLY [tbl].[Bis].[Element] [el]\");\r\n assert.equal(ClassNameExpr.fromECSql(\" + only tbl:Bis:Element el \").toECSql(), \"+ONLY [tbl].[Bis].[Element] [el]\");\r\n });\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ECSqlAst.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlAst.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ECSqlQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlQuery.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport { assert } from \"chai\";\r\nimport { DbResult, Id64 } from \"@itwin/core-bentley\";\r\nimport { DbQueryRequest, DbQueryResponse, DbRequestExecutor, DbRequestKind, ECSqlReader, QueryBinder, QueryOptionsBuilder, QueryPropertyMetaData, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { ConcurrentQuery } from \"../../ConcurrentQuery\";\r\nimport { _nativeDb, ECSqlStatement, SnapshotDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\r\nimport * as path from \"path\";\r\n\r\n// cspell:ignore mirukuru ibim\r\n\r\ndescribe(\"ECSql Query\", () => {\r\n let imodel1: SnapshotDb;\r\n let imodel2: SnapshotDb;\r\n let imodel3: SnapshotDb;\r\n let imodel4: SnapshotDb;\r\n let imodel5: SnapshotDb;\r\n let imodel6: SnapshotDb;\r\n\r\n before(async () => {\r\n\r\n imodel1 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\r\n imodel2 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\"));\r\n imodel3 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledStructProperties.bim\"));\r\n imodel4 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledArrayProperties.bim\"));\r\n imodel5 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\r\n imodel6 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test_ec_4003.bim\"));\r\n });\r\n\r\n after(async () => {\r\n imodel1.close();\r\n imodel2.close();\r\n imodel3.close();\r\n imodel4.close();\r\n imodel5.close();\r\n imodel6.close();\r\n });\r\n it(\"verify 4.8.x format for ECClassId\", async () => {\r\n const queries = [\r\n \"SELECT ECClassId FROM Bis.Element LIMIT 1\",\r\n \"SELECT ECClassId aClassId FROM Bis.Element LIMIT 1\",\r\n \"SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\r\n \"SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\r\n \"SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\r\n \"SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\r\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\r\n \"WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\r\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t\",\r\n \"SELECT * FROM (SELECT ECClassId FROM Bis.Element LIMIT 1)\",\r\n \"SELECT * FROM (SELECT ECClassId aClassId, ECClassId FROM Bis.Element LIMIT 1)\",\r\n \"SELECT * FROM (SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\r\n \"SELECT * FROM (SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\r\n \"SELECT * FROM (SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\r\n \"SELECT * FROM (SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\r\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\r\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\r\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t)\",\r\n ];\r\n assert.equal(queries.length, 18);\r\n const results = [\r\n { className: \"BisCore.DrawingCategory\" },\r\n { aClassId: \"0x4c\" },\r\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\r\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\r\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\r\n { aRelClassId: \"0xcf\" },\r\n { aClassId: \"0x4c\" },\r\n { aClassId: \"0x4c\" },\r\n { bClassId: \"0x4c\" },\r\n { className: \"BisCore.DrawingCategory\" },\r\n { aClassId: \"0x4c\", className: \"BisCore.DrawingCategory\" },\r\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\r\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\r\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\r\n { aRelClassId: \"0xcf\" },\r\n { aClassId: \"0x4c\" },\r\n { aClassId: \"0x4c\" },\r\n { bClassId: \"0x4c\" },\r\n ];\r\n assert.equal(results.length, 18);\r\n const builder = new QueryOptionsBuilder();\r\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\r\n let expectedRows = 0;\r\n for (let i = 0; i < queries.length; i++) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel1.withPreparedStatement(queries[i], (stmt: ECSqlStatement) => {\r\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\r\n assert.deepEqual(stmt.getRow(), results[i], `(ECSqlStatement) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n ++expectedRows;\r\n });\r\n for await (const row of imodel1.createQueryReader(queries[i], undefined, builder.getOptions())) {\r\n assert.deepEqual(row.toRow(), results[i], `(ECSqlReader) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n ++expectedRows;\r\n }\r\n }\r\n assert.equal(expectedRows, 36);\r\n });\r\n it(\"verify return values for system properties\", async () => {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n const testQueries = [\r\n //\r\n {\r\n query: \"SELECT a.ECInstanceId, b.ECInstanceId, a.ECClassId, b.ECClassId FROM BisCore.Element a, BisCore.Element b LIMIT 1\",\r\n result: {\r\n id: \"0x19\",\r\n id_1: \"0x19\",\r\n className: \"BisCore.DrawingCategory\",\r\n className_1: \"BisCore.DrawingCategory\",\r\n },\r\n },\r\n {\r\n query: \"SELECT Parent.Id,Parent.RelECClassId, Parent.Id myParentId, Parent.RelECClassId myParentRelClassId FROM BisCore.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\r\n result: {\r\n \"myParentId\": \"0x1\",\r\n \"myParentRelClassId\": \"0xcf\",\r\n \"parent.id\": \"0x1\",\r\n \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId, ECClassId FROM Bis.Element LIMIT 1\",\r\n result: {\r\n id: \"0x19\",\r\n className: \"BisCore.DrawingCategory\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId FROM Bis.Element) LIMIT 1\",\r\n result: {\r\n id: \"0x19\",\r\n className: \"BisCore.DrawingCategory\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements LIMIT 1\",\r\n result: {\r\n id: \"0x1\",\r\n className: \"BisCore.PartitionOriginatesFromRepository\",\r\n sourceId: \"0x1c\",\r\n sourceClassName: \"BisCore.PhysicalPartition\",\r\n targetId: \"0x12\",\r\n targetClassName: \"BisCore.RepositoryLink\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements) LIMIT 1\",\r\n result: {\r\n id: \"0x1\",\r\n className: \"BisCore.PartitionOriginatesFromRepository\",\r\n sourceId: \"0x1c\",\r\n sourceClassName: \"BisCore.PhysicalPartition\",\r\n targetId: \"0x12\",\r\n targetClassName: \"BisCore.RepositoryLink\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId a, ECClassId b FROM Bis.Element LIMIT 1\",\r\n result: {\r\n a: \"0x19\",\r\n b: \"0x4c\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b FROM Bis.Element) LIMIT 1\",\r\n result: {\r\n a: \"0x19\",\r\n b: \"0x4c\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId A, ECClassId B FROM Bis.Element LIMIT 1\",\r\n result: {\r\n a: \"0x19\",\r\n b: \"0x4c\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B FROM Bis.Element) LIMIT 1\",\r\n result: {\r\n a: \"0x19\",\r\n b: \"0x4c\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements) LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n },\r\n },\r\n {\r\n query: \"SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements) LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n },\r\n },\r\n {\r\n query: \"SELECT Model, Model.Id, Model.RelECClassId from Bis.Element limit 1\",\r\n result: {\r\n \"model\": {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n \"model.id\": \"0x1\",\r\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT Model, Model.Id, Model.RelECClassId from Bis.Element) LIMIT 1\",\r\n result: {\r\n \"model\": {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n \"model.id\": \"0x1\",\r\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\r\n },\r\n },\r\n {\r\n query: \"SELECT r.ECInstanceId, r.ECClassId, r.SourceECInstanceId, r.SourceECClassId, r.TargetECInstanceid, r.TargetECClassId, ele.Model, ele.Model.Id, ele.Model.RelECClassId FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId LIMIT 1\",\r\n result: {\r\n \"id\": \"0x1\",\r\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\r\n \"sourceId\": \"0x1c\",\r\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\r\n \"targetId\": \"0x12\",\r\n \"targetClassName\": \"BisCore.RepositoryLink\",\r\n \"model\": {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n \"model.id\": \"0x1\",\r\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT r.ECInstanceId, r.ECClassId, r.SourceECInstanceId, r.SourceECClassId, r.TargetECInstanceid, r.TargetECClassId, ele.Model, ele.Model.Id, ele.Model.RelECClassId FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId) LIMIT 1\",\r\n result: {\r\n \"id\": \"0x1\",\r\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\r\n \"sourceId\": \"0x1c\",\r\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\r\n \"targetId\": \"0x12\",\r\n \"targetClassName\": \"BisCore.RepositoryLink\",\r\n \"model\": {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n \"model.id\": \"0x1\",\r\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\r\n },\r\n },\r\n {\r\n query: \"SELECT r.ECInstanceId a, r.ECClassId b, r.SourceECInstanceId c, r.SourceECClassId d, r.TargetECInstanceid e, r.TargetECClassId f, ele.Model g, ele.Model.Id h, ele.Model.RelECClassId i FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n g: {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n h: \"0x1\",\r\n i: \"0x40\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT r.ECInstanceId a, r.ECClassId b, r.SourceECInstanceId c, r.SourceECClassId d, r.TargetECInstanceid e, r.TargetECClassId f, ele.Model g, ele.Model.Id h, ele.Model.RelECClassId i FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId) LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n g: {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n h: \"0x1\",\r\n i: \"0x40\",\r\n },\r\n },\r\n {\r\n query: \"SELECT r.ECInstanceId A, r.ECClassId B, r.SourceECInstanceId C, r.SourceECClassId D, r.TargetECInstanceid E, r.TargetECClassId F, ele.Model G, ele.Model.Id H, ele.Model.RelECClassId I FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n g: {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n h: \"0x1\",\r\n i: \"0x40\",\r\n },\r\n },\r\n {\r\n query: \"SELECT * FROM (SELECT r.ECInstanceId A, r.ECClassId B, r.SourceECInstanceId C, r.SourceECClassId D, r.TargetECInstanceid E, r.TargetECClassId F, ele.Model G, ele.Model.Id H, ele.Model.RelECClassId I FROM Bis.ElementRefersToElements r JOIN Bis.Element ele ON ele.ECInstanceId = r.SourceECInstanceId) LIMIT 1\",\r\n result: {\r\n a: \"0x1\",\r\n b: \"0xa8\",\r\n c: \"0x1c\",\r\n d: \"0xb4\",\r\n e: \"0x12\",\r\n f: \"0xa9\",\r\n g: {\r\n id: \"0x1\",\r\n relClassName: \"BisCore.ModelContainsElements\",\r\n },\r\n h: \"0x1\",\r\n i: \"0x40\",\r\n },\r\n },\r\n ];\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n const builder = new QueryOptionsBuilder();\r\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n builder.setConvertClassIdsToNames(true);\r\n // With ECDb Profile 4002\r\n for (const testQuery of testQueries) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel1.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\r\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\r\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n });\r\n\r\n let hasRow = false;\r\n for await (const row of imodel1.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\r\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n hasRow = true;\r\n }\r\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\r\n }\r\n // With ECDb Profile 4003\r\n for (const testQuery of testQueries) {\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n imodel6.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\r\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\r\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n });\r\n let hasRow = false;\r\n for await (const row of imodel6.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\r\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\r\n hasRow = true;\r\n }\r\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\r\n }\r\n });\r\n it(\"check prepare logErrors flag\", () => {\r\n const ecdb = imodel1;\r\n // expect log message when statement fails\r\n let slm = new SequentialLogMatcher();\r\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\r\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }), \"no such table: def (BE_SQLITE_ERROR)\");\r\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\r\n\r\n // now pass suppress log error which mean we should not get the error\r\n slm = new SequentialLogMatcher();\r\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\r\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }, /* logErrors = */ false), \"no such table: def (BE_SQLITE_ERROR)\");\r\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\r\n\r\n // expect log message when statement fails\r\n slm = new SequentialLogMatcher();\r\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }), \"ECClass 'abc.def' does not exist or could not be loaded.\");\r\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\r\n\r\n // now pass suppress log error which mean we should not get the error\r\n slm = new SequentialLogMatcher();\r\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\r\n // eslint-disable-next-line @typescript-eslint/no-deprecated\r\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }, /* logErrors = */ false), \"\");\r\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\r\n });\r\n it(\"restart query\", async () => {\r\n let cancelled = 0;\r\n let successful = 0;\r\n let rowCount = 0;\r\n try {\r\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\r\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\r\n\r\n const scheduleQuery = async (delay: number) => {\r\n return new Promise<void>(async (resolve, reject) => {\r\n try {\r\n const options = new QueryOptionsBuilder();\r\n options.setDelay(delay);\r\n options.setRestartToken(\"tag\");\r\n const reader = imodel1.createQueryReader(\"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\", undefined, options.getOptions());\r\n while (await reader.step()) {\r\n rowCount++;\r\n }\r\n successful++;\r\n resolve();\r\n } catch (err: any) {\r\n // we expect query to be cancelled\r\n if (err.errorNumber === DbResult.BE_SQLITE_INTERRUPT) {\r\n cancelled++;\r\n resolve();\r\n } else {\r\n reject(new Error(\"rejected\"));\r\n }\r\n }\r\n });\r\n };\r\n\r\n const queries = [];\r\n queries.push(scheduleQuery(5000));\r\n queries.push(scheduleQuery(0));\r\n\r\n await Promise.all(queries);\r\n // We expect at least one query to be cancelled\r\n assert.isAtLeast(cancelled, 1, \"cancelled should be at least 1\");\r\n assert.isAtLeast(successful, 1, \"successful should be at least 1\");\r\n assert.isAtLeast(rowCount, 1, \"rowCount should be at least 1\");\r\n } finally {\r\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\r\n ConcurrentQuery.resetConfig(imodel1[_nativeDb]);\r\n }\r\n });\r\n it(\"concurrent query should retry on timeout\", async () => {\r\n class MockECSqlReader extends ECSqlReader {\r\n public constructor(_executor: DbRequestExecutor<DbQueryRequest, DbQueryResponse>, query: string) {\r\n super(_executor, query);\r\n }\r\n public async mockReadRows(queryRequest: DbQueryRequest): Promise<DbQueryResponse> {\r\n return super.runWithRetry(queryRequest);\r\n }\r\n }\r\n\r\n // Set time to 1 sec to simulate a timeout scenario\r\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\r\n const executor = {\r\n execute: async (req: DbQueryRequest) => {\r\n return ConcurrentQuery.executeQueryRequest(imodel1[_nativeDb], req);\r\n },\r\n };\r\n const request: DbQueryRequest = {\r\n kind: DbRequestKind.ECSql,\r\n query: \"SELECT * FROM BisCore.element\",\r\n delay: 5000, // Set delay to a value > timeout\r\n };\r\n try {\r\n await new MockECSqlReader(executor, request.query).mockReadRows(request);\r\n assert(false); // We expect this scenario to always throw\r\n } catch (error: any) {\r\n // Query should give up after max retry count has been reached\r\n assert(error.message === \"query too long to execute or server is too busy\");\r\n }\r\n });\r\n it(\"concurrent query use primary connection\", async () => {\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { usePrimaryConn: true });\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n let rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 46);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n assert.equal(reader.stats.backendRowsReturned, 46);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n assert.isTrue(reader.stats.backendMemUsed > 1000);\r\n assert.isTrue(reader.stats.totalTime > 0);\r\n });\r\n it(\"concurrent query use idset\", async () => {\r\n const ids: string[] = [];\r\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\r\n ids.push(row[0]);\r\n }\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element WHERE InVirtualSet(?, ECInstanceId)\", QueryBinder.from([ids]));\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n let rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 23);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n assert.equal(reader.stats.backendRowsReturned, 23);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n assert.isTrue(reader.stats.backendMemUsed > 100);\r\n });\r\n it(\"concurrent query bind idset in IdSet virtual table\", async () => {\r\n const ids: string[] = [];\r\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\r\n ids.push(row[0]);\r\n }\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n let rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 23);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n assert.equal(reader.stats.backendRowsReturned, 23);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n assert.isTrue(reader.stats.backendMemUsed > 100);\r\n });\r\n it(\"concurrent query bind single id in IdSet virtual table\", async () => {\r\n let ids: string = \"\";\r\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\r\n ids = row[0]; // getting only the first id\r\n break;\r\n }\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n let rows = 0; // backend will fail to bind so no rows will be returned\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 0);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n assert.equal(reader.stats.backendRowsReturned, 0);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n });\r\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\r\n const ids: string[] = [\"0x1\", \"ABC\", \"YZ\"];\r\n\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n let rows = 0; // backend will bind successfully but some of the values are not valid for IdSet VT so those values will be ignored\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 1);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\r\n assert.equal(reader.stats.backendRowsReturned, 1);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n });\r\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\r\n const ids: string[] = [\"ABC\", \"0x1\", \"YZ\"]; // as first value is not an Id so QueryBinder.from will throw error of \"unsupported type\"\r\n\r\n try {\r\n imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\r\n } catch (err: any) {\r\n assert.equal(err.message, \"unsupported type\");\r\n }\r\n });\r\n it(\"concurrent query get meta data\", async () => {\r\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\");\r\n let props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n let rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 46);\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 11);\r\n assert.equal(reader.stats.backendRowsReturned, 46);\r\n assert.isTrue(reader.stats.backendCpuTime > 0);\r\n assert.isTrue(reader.stats.backendMemUsed > 1000);\r\n });\r\n it(\"concurrent query access string meta data\", async () => {\r\n let reader = imodel1.createQueryReader(\"SELECT e.ECClassId FROM bis.Element e\");\r\n let props: QueryPropertyMetaData[] = await reader.getMetaData();\r\n assert.equal(props.length, 1);\r\n assert.equal(props[0].accessString, \"ECClassId\");\r\n\r\n reader = imodel1.createQueryReader(\"SELECT Model.Id, e.Model.Id, Model.RelECClassId, e.Model.RelECClassId FROM bis.Element e\");\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 4);\r\n assert.equal(props[0].accessString, \"Model.Id\");\r\n assert.equal(props[1].accessString, \"Model.Id\");\r\n assert.equal(props[2].accessString, \"Model.RelECClassId\");\r\n assert.equal(props[3].accessString, \"Model.RelECClassId\");\r\n\r\n reader = imodel1.createQueryReader(\"SELECT Origin.X, Origin.Y, TypeDefinition FROM bis.GeometricElement2d ge\");\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 3);\r\n assert.equal(props[0].accessString, \"Origin.X\");\r\n assert.equal(props[1].accessString, \"Origin.Y\");\r\n assert.equal(props[2].accessString, \"TypeDefinition\");\r\n assert.equal(props[2].typeName, \"navigation\");\r\n\r\n reader = imodel1.createQueryReader(\"SELECT 1, 1 + 6, * FROM (VALUES(1,2), (2,3))\");\r\n props = await reader.getMetaData();\r\n assert.equal(props.length, 4);\r\n assert.equal(props[0].accessString, \"1\");\r\n assert.equal(props[0].jsonName, \"1\");\r\n assert.equal(props[1].accessString, \"1 + 6\");\r\n assert.equal(props[1].typeName, \"double\");\r\n assert.equal(props[2].accessString, \"1_1\");\r\n assert.equal(props[2].jsonName, \"1_1\");\r\n assert.equal(props[3].accessString, \"2\");\r\n });\r\n it(\"concurrent query quota\", async () => {\r\n let reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { count: 4 } });\r\n let rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 4);\r\n reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { offset: 4, count: 4 } });\r\n rows = 0;\r\n while (await reader.step()) {\r\n rows++;\r\n }\r\n assert.equal(rows, 4);\r\n });\r\n it(\"paging results\", async () => {\r\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\r\n const nRowPerPage = nRowCount / nPageSize;\r\n const nPages = Math.ceil(nRowPerPage);\r\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\r\n const pages = new Array(nPages).fill(pageSize);\r\n if (nRowPerPage) {\r\n pages[nPages - 1] = nRowOnLastPage;\r\n }\r\n return pages;\r\n };\r\n\r\n const pageSize = 5;\r\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\";\r\n const dbs = [imodel1, imodel2, imodel3, imodel4, imodel5];\r\n const pendingRowCount = [];\r\n for (const db of dbs) {\r\n for await (const row of db.createQueryReader(`SELECT count(*) FROM (${query})`)) {\r\n pendingRowCount.push(row[0] as number);\r\n }\r\n }\r\n\r\n const rowCounts = await Promise.all(pendingRowCount);\r\n const expected = [46, 62, 7, 7, 28];\r\n assert.equal(rowCounts.length, expected.length);\r\n for (let i = 0; i < expected.length; i++) {\r\n assert.equal(rowCounts[i], expected[i]);\r\n }\r\n // verify row per page\r\n for (const db of dbs) {\r\n const i = dbs.indexOf(db);\r\n const rowPerPage = getRowPerPage(pageSize, expected[i]);\r\n for (let k = 0; k < rowPerPage.length; k++) {\r\n const rs = await db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames, limit: { count: pageSize, offset: k * pageSize } }).toArray();\r\n assert.equal(rs.length, rowPerPage[k]);\r\n }\r\n }\r\n\r\n // verify async iterator\r\n for (const db of dbs) {\r\n const resultSet = [];\r\n for await (const queryRow of db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\r\n const row = queryRow.toRow();\r\n resultSet.push(row);\r\n assert.isTrue(Reflect.has(row, \"id\"));\r\n if (Reflect.ownKeys(row).length > 1) {\r\n assert.isTrue(Reflect.has(row, \"parentId\"));\r\n const parentId: string = row.parentId as string;\r\n assert.isTrue(Id64.isValidId64(parentId));\r\n }\r\n const id: string = row.id as string;\r\n assert.isTrue(Id64.isValidId64(id));\r\n }\r\n const entry = dbs.indexOf(db);\r\n assert.equal(rowCounts[entry], resultSet.length);\r\n }\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ECSqlQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlQuery.test.ts"],"names":[],"mappings":"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"}
|