@itwin/core-backend 5.1.0-dev.0 → 5.1.0-dev.3
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/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.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 +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +242 -242
- 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 +5 -5
- 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 +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/IModelDb.js +8 -8
- 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/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 +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/TextAnnotationElement.js.map +1 -1
- package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
- package/lib/cjs/TextAnnotationLayout.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- 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/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
- package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
- 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.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/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.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 +2 -2
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangedElementsDb.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +242 -242
- 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 +5 -5
- 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 +47 -47
- package/lib/esm/GeometrySummary.js.map +1 -1
- package/lib/esm/IModelDb.js +8 -8
- 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/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 +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/TextAnnotationElement.js.map +1 -1
- package/lib/esm/TextAnnotationGeometry.js.map +1 -1
- package/lib/esm/TextAnnotationLayout.js.map +1 -1
- package/lib/esm/Texture.js.map +1 -1
- package/lib/esm/TileStorage.js.map +1 -1
- 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/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.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/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/AttachDb.test.js +11 -11
- package/lib/esm/test/AttachDb.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 +25 -25
- 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/TextAnnotation.test.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 +88 -88
- package/lib/esm/test/ecdb/CTE.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +15 -15
- package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECDb.test.js +57 -57
- 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 +65 -65
- package/lib/esm/test/ecdb/ECSqlAst.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlQuery.test.js +7 -7
- package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlReader.test.js +16 -16
- package/lib/esm/test/ecdb/ECSqlReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlStatement.test.js +292 -292
- 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 +21 -21
- 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 +22 -22
- 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 +139 -139
- 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 +13 -13
- 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/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- 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/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 +71 -71
- 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.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +28 -28
- 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 +14 -14
- 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/IModelWrite.test.js +27 -27
- 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 +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeSpec.test.js","sourceRoot":"","sources":["../../../../src/test/codespec/CodeSpec.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\
|
|
1
|
+
{"version":3,"file":"CodeSpec.test.js","sourceRoot":"","sources":["../../../../src/test/codespec/CodeSpec.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { expect } from \"chai\";\nimport { Guid, Id64 } from \"@itwin/core-bentley\";\nimport { CodeScopeSpec, CodeSpec } from \"@itwin/core-common\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { StandaloneDb } from \"../../IModelDb\";\n\ndescribe(\"CodeSpec\", () => {\n let imodel: StandaloneDb;\n before(() => {\n imodel = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"CodeSpec\", \"CodeSpec.bim\"), {\n rootSubject: { name: \"CodeSpec tests\", description: \"CodeSpec tests\" },\n client: \"CodeSpec\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n });\n\n after(() => {\n imodel.close();\n });\n\n it(\"should insert with default properties and update them later\", () => {\n let codeSpec = CodeSpec.create(imodel, \"PumpTag\", CodeScopeSpec.Type.Model);\n const codeSpecId = imodel.codeSpecs.insert(codeSpec);\n\n imodel.saveChanges();\n expect(Id64.isValidId64(codeSpecId)).to.be.true;\n expect(codeSpecId).to.be.equal(codeSpec.id);\n\n codeSpec = imodel.codeSpecs.getById(codeSpecId);\n\n expect(codeSpec.scopeReq).to.be.equal(CodeScopeSpec.ScopeRequirement.ElementId);\n expect(codeSpec.scopeType).to.be.equal(CodeScopeSpec.Type.Model);\n expect(codeSpec.isExternal).false;\n\n codeSpec.scopeReq = CodeScopeSpec.ScopeRequirement.FederationGuid;\n codeSpec.scopeType = CodeScopeSpec.Type.Repository;\n imodel.codeSpecs.updateProperties(codeSpec);\n imodel.saveChanges();\n const fname = imodel.pathName;\n imodel.close();\n imodel = StandaloneDb.openFile(fname);\n\n codeSpec = imodel.codeSpecs.getByName(\"PumpTag\");\n expect(codeSpecId).to.be.equal(codeSpec.id);\n expect(codeSpec.name).equal(\"PumpTag\");\n expect(codeSpec.isExternal).true;\n\n expect(codeSpec.scopeReq).to.be.equal(CodeScopeSpec.ScopeRequirement.FederationGuid);\n expect(codeSpec.scopeType).to.be.equal(CodeScopeSpec.Type.Repository);\n\n codeSpec = imodel.codeSpecs.getById(codeSpecId);\n expect(codeSpec.name).to.be.equal(\"PumpTag\");\n });\n});\n"]}
|
|
@@ -24,17 +24,17 @@ describe("Common table expression support in ECSQL", () => {
|
|
|
24
24
|
imodel1.close();
|
|
25
25
|
});
|
|
26
26
|
it("collect base properties recursively", async () => {
|
|
27
|
-
const query = `
|
|
28
|
-
WITH RECURSIVE
|
|
29
|
-
base_classes (aId, aParentId, aPath, aDepth) AS (
|
|
30
|
-
SELECT c.ECInstanceId, null, c.Name, 0 FROM meta.ECClassDef c WHERE c.Name=?
|
|
31
|
-
UNION ALL
|
|
32
|
-
SELECT c.ECInstanceId, cbc.TargetECInstanceId, aPath || '/' || c.Name, aDepth + 1
|
|
33
|
-
FROM meta.ECClassDef c
|
|
34
|
-
JOIN meta.ClassHasBaseClasses cbc ON cbc.SourceECInstanceId = c.ECInstanceId
|
|
35
|
-
JOIN base_classes ON aId = cbc.TargetECInstanceId
|
|
36
|
-
ORDER BY 1
|
|
37
|
-
)
|
|
27
|
+
const query = `
|
|
28
|
+
WITH RECURSIVE
|
|
29
|
+
base_classes (aId, aParentId, aPath, aDepth) AS (
|
|
30
|
+
SELECT c.ECInstanceId, null, c.Name, 0 FROM meta.ECClassDef c WHERE c.Name=?
|
|
31
|
+
UNION ALL
|
|
32
|
+
SELECT c.ECInstanceId, cbc.TargetECInstanceId, aPath || '/' || c.Name, aDepth + 1
|
|
33
|
+
FROM meta.ECClassDef c
|
|
34
|
+
JOIN meta.ClassHasBaseClasses cbc ON cbc.SourceECInstanceId = c.ECInstanceId
|
|
35
|
+
JOIN base_classes ON aId = cbc.TargetECInstanceId
|
|
36
|
+
ORDER BY 1
|
|
37
|
+
)
|
|
38
38
|
SELECT p.Name prop from base_classes join meta.ECPropertyDef p on p.Class.id = aId GROUP BY p.Name`;
|
|
39
39
|
const rows = await executeQuery(imodel1, query, ["Element"]);
|
|
40
40
|
const expected = ["Angle", "BaseModel", "BBoxHigh", "BBoxLow", "Border", "BorderTemplate", "Category", "CategorySelector", "CodeScope", "CodeSpec", "CodeValue", "Data", "Description", "DisplayStyle", "DrawingModel", "Enabled", "Extents", "EyePoint", "FederationGuid", "Flags", "FocusDistance", "Format", "GeometryStream", "Height", "InSpatialIndex", "IsCameraOn", "IsPrivate", "JsonProperties", "LastMod", "LensAngle", "Model", "ModelSelector", "Name", "Origin", "PaletteName", "Parent", "Pitch", "Properties", "Rank", "Recipe", "RepositoryGuid", "Roll", "Rotation", "RotationAngle", "Scale", "SheetTemplate", "Type", "TypeDefinition", "Url", "UserLabel", "View", "ViewAttachment", "Width", "Yaw"];
|
|
@@ -42,58 +42,58 @@ describe("Common table expression support in ECSQL", () => {
|
|
|
42
42
|
assert.sameOrderedMembers(actual, expected);
|
|
43
43
|
});
|
|
44
44
|
it("generate mandelbrot set", async () => {
|
|
45
|
-
const rows = await executeQuery(imodel1, `
|
|
46
|
-
WITH RECURSIVE
|
|
47
|
-
[xaxis]([x]) AS(
|
|
48
|
-
VALUES (- 2.0)
|
|
49
|
-
UNION ALL
|
|
50
|
-
SELECT [x] + 0.05
|
|
51
|
-
FROM [xaxis]
|
|
52
|
-
WHERE [x] < 1.2
|
|
53
|
-
),
|
|
54
|
-
[yaxis]([y]) AS(
|
|
55
|
-
VALUES (- 1.0)
|
|
56
|
-
UNION ALL
|
|
57
|
-
SELECT [y] + 0.1
|
|
58
|
-
FROM [yaxis]
|
|
59
|
-
WHERE [y] < 1.0
|
|
60
|
-
),
|
|
61
|
-
[m]([iter], [cx], [cy], [x], [y]) AS(
|
|
62
|
-
SELECT
|
|
63
|
-
0,
|
|
64
|
-
[x],
|
|
65
|
-
[y],
|
|
66
|
-
0.0,
|
|
67
|
-
0.0
|
|
68
|
-
FROM [xaxis],
|
|
69
|
-
[yaxis]
|
|
70
|
-
UNION ALL
|
|
71
|
-
SELECT
|
|
72
|
-
[iter] + 1,
|
|
73
|
-
[cx],
|
|
74
|
-
[cy],
|
|
75
|
-
[x] * [x] - [y] * [y] + [cx],
|
|
76
|
-
2.0 * [x] * [y] + [cy]
|
|
77
|
-
FROM [m]
|
|
78
|
-
WHERE ([x] * [x] + [y] * [y]) < 4.0 AND [iter] < 28
|
|
79
|
-
),
|
|
80
|
-
[m2]([iter], [cx], [cy]) AS(
|
|
81
|
-
SELECT
|
|
82
|
-
MAX ([iter]),
|
|
83
|
-
[cx],
|
|
84
|
-
[cy]
|
|
85
|
-
FROM [m]
|
|
86
|
-
GROUP BY
|
|
87
|
-
[cx],
|
|
88
|
-
[cy]
|
|
89
|
-
),
|
|
90
|
-
[a]([t]) AS(
|
|
91
|
-
SELECT GROUP_CONCAT (SUBSTR (' .+*#', 1 + (CASE WHEN [iter] / 7 > 4 THEN 4 ELSE [iter] / 7 END), 1), '')
|
|
92
|
-
FROM [m2]
|
|
93
|
-
GROUP BY [cy]
|
|
94
|
-
)
|
|
95
|
-
SELECT GROUP_CONCAT (RTRIM ([t]), CHAR (0xa)) mandelbrot_set
|
|
96
|
-
FROM [a];
|
|
45
|
+
const rows = await executeQuery(imodel1, `
|
|
46
|
+
WITH RECURSIVE
|
|
47
|
+
[xaxis]([x]) AS(
|
|
48
|
+
VALUES (- 2.0)
|
|
49
|
+
UNION ALL
|
|
50
|
+
SELECT [x] + 0.05
|
|
51
|
+
FROM [xaxis]
|
|
52
|
+
WHERE [x] < 1.2
|
|
53
|
+
),
|
|
54
|
+
[yaxis]([y]) AS(
|
|
55
|
+
VALUES (- 1.0)
|
|
56
|
+
UNION ALL
|
|
57
|
+
SELECT [y] + 0.1
|
|
58
|
+
FROM [yaxis]
|
|
59
|
+
WHERE [y] < 1.0
|
|
60
|
+
),
|
|
61
|
+
[m]([iter], [cx], [cy], [x], [y]) AS(
|
|
62
|
+
SELECT
|
|
63
|
+
0,
|
|
64
|
+
[x],
|
|
65
|
+
[y],
|
|
66
|
+
0.0,
|
|
67
|
+
0.0
|
|
68
|
+
FROM [xaxis],
|
|
69
|
+
[yaxis]
|
|
70
|
+
UNION ALL
|
|
71
|
+
SELECT
|
|
72
|
+
[iter] + 1,
|
|
73
|
+
[cx],
|
|
74
|
+
[cy],
|
|
75
|
+
[x] * [x] - [y] * [y] + [cx],
|
|
76
|
+
2.0 * [x] * [y] + [cy]
|
|
77
|
+
FROM [m]
|
|
78
|
+
WHERE ([x] * [x] + [y] * [y]) < 4.0 AND [iter] < 28
|
|
79
|
+
),
|
|
80
|
+
[m2]([iter], [cx], [cy]) AS(
|
|
81
|
+
SELECT
|
|
82
|
+
MAX ([iter]),
|
|
83
|
+
[cx],
|
|
84
|
+
[cy]
|
|
85
|
+
FROM [m]
|
|
86
|
+
GROUP BY
|
|
87
|
+
[cx],
|
|
88
|
+
[cy]
|
|
89
|
+
),
|
|
90
|
+
[a]([t]) AS(
|
|
91
|
+
SELECT GROUP_CONCAT (SUBSTR (' .+*#', 1 + (CASE WHEN [iter] / 7 > 4 THEN 4 ELSE [iter] / 7 END), 1), '')
|
|
92
|
+
FROM [m2]
|
|
93
|
+
GROUP BY [cy]
|
|
94
|
+
)
|
|
95
|
+
SELECT GROUP_CONCAT (RTRIM ([t]), CHAR (0xa)) mandelbrot_set
|
|
96
|
+
FROM [a];
|
|
97
97
|
`);
|
|
98
98
|
const expected = " ....#\n" +
|
|
99
99
|
" ..#*..\n" +
|
|
@@ -121,34 +121,34 @@ describe("Common table expression support in ECSQL", () => {
|
|
|
121
121
|
});
|
|
122
122
|
it("basic cte test", async () => {
|
|
123
123
|
let rows = [];
|
|
124
|
-
rows = await executeQuery(imodel1, `
|
|
125
|
-
WITH RECURSIVE
|
|
126
|
-
cnt (x,y) AS (
|
|
127
|
-
SELECT 100, 200
|
|
128
|
-
UNION ALL
|
|
129
|
-
SELECT x+1, 200 FROM cnt WHERE x<210
|
|
130
|
-
)
|
|
124
|
+
rows = await executeQuery(imodel1, `
|
|
125
|
+
WITH RECURSIVE
|
|
126
|
+
cnt (x,y) AS (
|
|
127
|
+
SELECT 100, 200
|
|
128
|
+
UNION ALL
|
|
129
|
+
SELECT x+1, 200 FROM cnt WHERE x<210
|
|
130
|
+
)
|
|
131
131
|
SELECT * from cnt`);
|
|
132
132
|
assert(rows.length === 111);
|
|
133
|
-
rows = await executeQuery(imodel1, `
|
|
134
|
-
WITH RECURSIVE
|
|
135
|
-
cnt (x,y) AS (
|
|
136
|
-
SELECT 100, 200
|
|
137
|
-
)
|
|
133
|
+
rows = await executeQuery(imodel1, `
|
|
134
|
+
WITH RECURSIVE
|
|
135
|
+
cnt (x,y) AS (
|
|
136
|
+
SELECT 100, 200
|
|
137
|
+
)
|
|
138
138
|
SELECT * from cnt`);
|
|
139
139
|
let slm = new SequentialLogMatcher();
|
|
140
140
|
// these two are generated by sqlite
|
|
141
141
|
slm.append().error().category("ECDb").message(/BE_SQLITE_ERROR duplicate WITH table name/gm);
|
|
142
142
|
assert(rows.length === 1);
|
|
143
143
|
try {
|
|
144
|
-
rows = await executeQuery(imodel1, `
|
|
145
|
-
WITH
|
|
146
|
-
cte_1 (a,b,c) AS (
|
|
147
|
-
SELECT 100, 400, 300
|
|
148
|
-
),
|
|
149
|
-
cte_1 (a,b,c) AS (
|
|
150
|
-
SELECT 100, 400, 300
|
|
151
|
-
)
|
|
144
|
+
rows = await executeQuery(imodel1, `
|
|
145
|
+
WITH
|
|
146
|
+
cte_1 (a,b,c) AS (
|
|
147
|
+
SELECT 100, 400, 300
|
|
148
|
+
),
|
|
149
|
+
cte_1 (a,b,c) AS (
|
|
150
|
+
SELECT 100, 400, 300
|
|
151
|
+
)
|
|
152
152
|
SELECT * from cte_1`);
|
|
153
153
|
assert(false);
|
|
154
154
|
}
|
|
@@ -160,11 +160,11 @@ describe("Common table expression support in ECSQL", () => {
|
|
|
160
160
|
// these two are generated by ECSQL. Its not clear why this message is logged twice.
|
|
161
161
|
slm.append().error().category("ECDb").message(/Common table 'cte_1' has 3 values for columns 2/gm);
|
|
162
162
|
try {
|
|
163
|
-
rows = await executeQuery(imodel1, `
|
|
164
|
-
WITH
|
|
165
|
-
cte_1 (a,b,c) AS (
|
|
166
|
-
SELECT 100, 400
|
|
167
|
-
)
|
|
163
|
+
rows = await executeQuery(imodel1, `
|
|
164
|
+
WITH
|
|
165
|
+
cte_1 (a,b,c) AS (
|
|
166
|
+
SELECT 100, 400
|
|
167
|
+
)
|
|
168
168
|
SELECT * from cte_1`);
|
|
169
169
|
assert(false);
|
|
170
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CTE.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/CTE.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 { QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\r\nimport { IModelDb, SnapshotDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\r\n\r\n// cspell:ignore mirukuru ibim\r\n\r\nasync function executeQuery(iModel: IModelDb, ecsql: string, bindings?: any[] | object, abbreviateBlobs?: boolean): Promise<any[]> {\r\n const rows: any[] = [];\r\n for await (const queryRow of iModel.createQueryReader(ecsql, QueryBinder.from(bindings), { rowFormat: QueryRowFormat.UseJsPropertyNames, abbreviateBlobs })) {\r\n rows.push(queryRow.toRow());\r\n }\r\n return rows;\r\n}\r\n\r\ndescribe(\"Common table expression support in ECSQL\", () => {\r\n let imodel1: SnapshotDb;\r\n\r\n before(async () => {\r\n imodel1 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\r\n });\r\n\r\n after(async () => {\r\n imodel1.close();\r\n });\r\n it(\"collect base properties recursively\", async () => {\r\n const query = `\r\n WITH RECURSIVE\r\n base_classes (aId, aParentId, aPath, aDepth) AS (\r\n SELECT c.ECInstanceId, null, c.Name, 0 FROM meta.ECClassDef c WHERE c.Name=?\r\n UNION ALL\r\n SELECT c.ECInstanceId, cbc.TargetECInstanceId, aPath || '/' || c.Name, aDepth + 1\r\n FROM meta.ECClassDef c\r\n JOIN meta.ClassHasBaseClasses cbc ON cbc.SourceECInstanceId = c.ECInstanceId\r\n JOIN base_classes ON aId = cbc.TargetECInstanceId\r\n ORDER BY 1\r\n )\r\n SELECT p.Name prop from base_classes join meta.ECPropertyDef p on p.Class.id = aId GROUP BY p.Name` ;\r\n const rows = await executeQuery(imodel1, query, [\"Element\"]);\r\n const expected = [\"Angle\", \"BaseModel\", \"BBoxHigh\", \"BBoxLow\", \"Border\", \"BorderTemplate\", \"Category\", \"CategorySelector\", \"CodeScope\", \"CodeSpec\", \"CodeValue\", \"Data\", \"Description\", \"DisplayStyle\", \"DrawingModel\", \"Enabled\", \"Extents\", \"EyePoint\", \"FederationGuid\", \"Flags\", \"FocusDistance\", \"Format\", \"GeometryStream\", \"Height\", \"InSpatialIndex\", \"IsCameraOn\", \"IsPrivate\", \"JsonProperties\", \"LastMod\", \"LensAngle\", \"Model\", \"ModelSelector\", \"Name\", \"Origin\", \"PaletteName\", \"Parent\", \"Pitch\", \"Properties\", \"Rank\", \"Recipe\", \"RepositoryGuid\", \"Roll\", \"Rotation\", \"RotationAngle\", \"Scale\", \"SheetTemplate\", \"Type\", \"TypeDefinition\", \"Url\", \"UserLabel\", \"View\", \"ViewAttachment\", \"Width\", \"Yaw\"];\r\n const actual = rows.map((r) => r.prop);\r\n assert.sameOrderedMembers(actual, expected);\r\n });\r\n\r\n it(\"generate mandelbrot set\", async () => {\r\n const rows = await executeQuery(imodel1, `\r\n WITH RECURSIVE\r\n [xaxis]([x]) AS(\r\n VALUES (- 2.0)\r\n UNION ALL\r\n SELECT [x] + 0.05\r\n FROM [xaxis]\r\n WHERE [x] < 1.2\r\n ),\r\n [yaxis]([y]) AS(\r\n VALUES (- 1.0)\r\n UNION ALL\r\n SELECT [y] + 0.1\r\n FROM [yaxis]\r\n WHERE [y] < 1.0\r\n ),\r\n [m]([iter], [cx], [cy], [x], [y]) AS(\r\n SELECT\r\n 0,\r\n [x],\r\n [y],\r\n 0.0,\r\n 0.0\r\n FROM [xaxis],\r\n [yaxis]\r\n UNION ALL\r\n SELECT\r\n [iter] + 1,\r\n [cx],\r\n [cy],\r\n [x] * [x] - [y] * [y] + [cx],\r\n 2.0 * [x] * [y] + [cy]\r\n FROM [m]\r\n WHERE ([x] * [x] + [y] * [y]) < 4.0 AND [iter] < 28\r\n ),\r\n [m2]([iter], [cx], [cy]) AS(\r\n SELECT\r\n MAX ([iter]),\r\n [cx],\r\n [cy]\r\n FROM [m]\r\n GROUP BY\r\n [cx],\r\n [cy]\r\n ),\r\n [a]([t]) AS(\r\n SELECT GROUP_CONCAT (SUBSTR (' .+*#', 1 + (CASE WHEN [iter] / 7 > 4 THEN 4 ELSE [iter] / 7 END), 1), '')\r\n FROM [m2]\r\n GROUP BY [cy]\r\n )\r\n SELECT GROUP_CONCAT (RTRIM ([t]), CHAR (0xa)) mandelbrot_set\r\n FROM [a];\r\n `);\r\n\r\n const expected =\r\n \" ....#\\n\" +\r\n \" ..#*..\\n\" +\r\n \" ..+####+.\\n\" +\r\n \" .......+####.... +\\n\" +\r\n \" ..##+*##########+.++++\\n\" +\r\n \" .+.##################+.\\n\" +\r\n \" .............+###################+.+\\n\" +\r\n \" ..++..#.....*#####################+.\\n\" +\r\n \" ...+#######++#######################.\\n\" +\r\n \" ....+*################################.\\n\" +\r\n \" #############################################...\\n\" +\r\n \" ....+*################################.\\n\" +\r\n \" ...+#######++#######################.\\n\" +\r\n \" ..++..#.....*#####################+.\\n\" +\r\n \" .............+###################+.+\\n\" +\r\n \" .+.##################+.\\n\" +\r\n \" ..##+*##########+.++++\\n\" +\r\n \" .......+####.... +\\n\" +\r\n \" ..+####+.\\n\" +\r\n \" ..#*..\\n\" +\r\n \" ....#\\n\" +\r\n \" +.\";\r\n assert(rows[0].mandelbrot_set === expected);\r\n });\r\n\r\n it(\"basic cte test\", async () => {\r\n let rows = [];\r\n rows = await executeQuery(imodel1, `\r\n WITH RECURSIVE\r\n cnt (x,y) AS (\r\n SELECT 100, 200\r\n UNION ALL\r\n SELECT x+1, 200 FROM cnt WHERE x<210\r\n )\r\n SELECT * from cnt`);\r\n assert(rows.length === 111);\r\n\r\n rows = await executeQuery(imodel1, `\r\n WITH RECURSIVE\r\n cnt (x,y) AS (\r\n SELECT 100, 200\r\n )\r\n SELECT * from cnt`);\r\n\r\n let slm = new SequentialLogMatcher();\r\n // these two are generated by sqlite\r\n slm.append().error().category(\"ECDb\").message(/BE_SQLITE_ERROR duplicate WITH table name/gm);\r\n assert(rows.length === 1);\r\n try {\r\n rows = await executeQuery(imodel1, `\r\n WITH\r\n cte_1 (a,b,c) AS (\r\n SELECT 100, 400, 300\r\n ),\r\n cte_1 (a,b,c) AS (\r\n SELECT 100, 400, 300\r\n )\r\n SELECT * from cte_1`);\r\n assert(false);\r\n } catch {\r\n assert(true); // should fail as cte_1 is used for two ct expression.\r\n }\r\n assert.isTrue(slm.finishAndDispose());\r\n slm = new SequentialLogMatcher();\r\n // these two are generated by ECSQL. Its not clear why this message is logged twice.\r\n slm.append().error().category(\"ECDb\").message(/Common table 'cte_1' has 3 values for columns 2/gm);\r\n try {\r\n rows = await executeQuery(imodel1, `\r\n WITH\r\n cte_1 (a,b,c) AS (\r\n SELECT 100, 400\r\n )\r\n SELECT * from cte_1`);\r\n assert(false);\r\n } catch {\r\n assert(true); // number are to ct expression does not match select\r\n }\r\n assert.isTrue(slm.finishAndDispose());\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"CTE.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/CTE.test.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport { assert } from \"chai\";\nimport { QueryBinder, QueryRowFormat } from \"@itwin/core-common\";\nimport { IModelDb, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\n\n// cspell:ignore mirukuru ibim\n\nasync function executeQuery(iModel: IModelDb, ecsql: string, bindings?: any[] | object, abbreviateBlobs?: boolean): Promise<any[]> {\n const rows: any[] = [];\n for await (const queryRow of iModel.createQueryReader(ecsql, QueryBinder.from(bindings), { rowFormat: QueryRowFormat.UseJsPropertyNames, abbreviateBlobs })) {\n rows.push(queryRow.toRow());\n }\n return rows;\n}\n\ndescribe(\"Common table expression support in ECSQL\", () => {\n let imodel1: SnapshotDb;\n\n before(async () => {\n imodel1 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n });\n\n after(async () => {\n imodel1.close();\n });\n it(\"collect base properties recursively\", async () => {\n const query = `\n WITH RECURSIVE\n base_classes (aId, aParentId, aPath, aDepth) AS (\n SELECT c.ECInstanceId, null, c.Name, 0 FROM meta.ECClassDef c WHERE c.Name=?\n UNION ALL\n SELECT c.ECInstanceId, cbc.TargetECInstanceId, aPath || '/' || c.Name, aDepth + 1\n FROM meta.ECClassDef c\n JOIN meta.ClassHasBaseClasses cbc ON cbc.SourceECInstanceId = c.ECInstanceId\n JOIN base_classes ON aId = cbc.TargetECInstanceId\n ORDER BY 1\n )\n SELECT p.Name prop from base_classes join meta.ECPropertyDef p on p.Class.id = aId GROUP BY p.Name` ;\n const rows = await executeQuery(imodel1, query, [\"Element\"]);\n const expected = [\"Angle\", \"BaseModel\", \"BBoxHigh\", \"BBoxLow\", \"Border\", \"BorderTemplate\", \"Category\", \"CategorySelector\", \"CodeScope\", \"CodeSpec\", \"CodeValue\", \"Data\", \"Description\", \"DisplayStyle\", \"DrawingModel\", \"Enabled\", \"Extents\", \"EyePoint\", \"FederationGuid\", \"Flags\", \"FocusDistance\", \"Format\", \"GeometryStream\", \"Height\", \"InSpatialIndex\", \"IsCameraOn\", \"IsPrivate\", \"JsonProperties\", \"LastMod\", \"LensAngle\", \"Model\", \"ModelSelector\", \"Name\", \"Origin\", \"PaletteName\", \"Parent\", \"Pitch\", \"Properties\", \"Rank\", \"Recipe\", \"RepositoryGuid\", \"Roll\", \"Rotation\", \"RotationAngle\", \"Scale\", \"SheetTemplate\", \"Type\", \"TypeDefinition\", \"Url\", \"UserLabel\", \"View\", \"ViewAttachment\", \"Width\", \"Yaw\"];\n const actual = rows.map((r) => r.prop);\n assert.sameOrderedMembers(actual, expected);\n });\n\n it(\"generate mandelbrot set\", async () => {\n const rows = await executeQuery(imodel1, `\n WITH RECURSIVE\n [xaxis]([x]) AS(\n VALUES (- 2.0)\n UNION ALL\n SELECT [x] + 0.05\n FROM [xaxis]\n WHERE [x] < 1.2\n ),\n [yaxis]([y]) AS(\n VALUES (- 1.0)\n UNION ALL\n SELECT [y] + 0.1\n FROM [yaxis]\n WHERE [y] < 1.0\n ),\n [m]([iter], [cx], [cy], [x], [y]) AS(\n SELECT\n 0,\n [x],\n [y],\n 0.0,\n 0.0\n FROM [xaxis],\n [yaxis]\n UNION ALL\n SELECT\n [iter] + 1,\n [cx],\n [cy],\n [x] * [x] - [y] * [y] + [cx],\n 2.0 * [x] * [y] + [cy]\n FROM [m]\n WHERE ([x] * [x] + [y] * [y]) < 4.0 AND [iter] < 28\n ),\n [m2]([iter], [cx], [cy]) AS(\n SELECT\n MAX ([iter]),\n [cx],\n [cy]\n FROM [m]\n GROUP BY\n [cx],\n [cy]\n ),\n [a]([t]) AS(\n SELECT GROUP_CONCAT (SUBSTR (' .+*#', 1 + (CASE WHEN [iter] / 7 > 4 THEN 4 ELSE [iter] / 7 END), 1), '')\n FROM [m2]\n GROUP BY [cy]\n )\n SELECT GROUP_CONCAT (RTRIM ([t]), CHAR (0xa)) mandelbrot_set\n FROM [a];\n `);\n\n const expected =\n \" ....#\\n\" +\n \" ..#*..\\n\" +\n \" ..+####+.\\n\" +\n \" .......+####.... +\\n\" +\n \" ..##+*##########+.++++\\n\" +\n \" .+.##################+.\\n\" +\n \" .............+###################+.+\\n\" +\n \" ..++..#.....*#####################+.\\n\" +\n \" ...+#######++#######################.\\n\" +\n \" ....+*################################.\\n\" +\n \" #############################################...\\n\" +\n \" ....+*################################.\\n\" +\n \" ...+#######++#######################.\\n\" +\n \" ..++..#.....*#####################+.\\n\" +\n \" .............+###################+.+\\n\" +\n \" .+.##################+.\\n\" +\n \" ..##+*##########+.++++\\n\" +\n \" .......+####.... +\\n\" +\n \" ..+####+.\\n\" +\n \" ..#*..\\n\" +\n \" ....#\\n\" +\n \" +.\";\n assert(rows[0].mandelbrot_set === expected);\n });\n\n it(\"basic cte test\", async () => {\n let rows = [];\n rows = await executeQuery(imodel1, `\n WITH RECURSIVE\n cnt (x,y) AS (\n SELECT 100, 200\n UNION ALL\n SELECT x+1, 200 FROM cnt WHERE x<210\n )\n SELECT * from cnt`);\n assert(rows.length === 111);\n\n rows = await executeQuery(imodel1, `\n WITH RECURSIVE\n cnt (x,y) AS (\n SELECT 100, 200\n )\n SELECT * from cnt`);\n\n let slm = new SequentialLogMatcher();\n // these two are generated by sqlite\n slm.append().error().category(\"ECDb\").message(/BE_SQLITE_ERROR duplicate WITH table name/gm);\n assert(rows.length === 1);\n try {\n rows = await executeQuery(imodel1, `\n WITH\n cte_1 (a,b,c) AS (\n SELECT 100, 400, 300\n ),\n cte_1 (a,b,c) AS (\n SELECT 100, 400, 300\n )\n SELECT * from cte_1`);\n assert(false);\n } catch {\n assert(true); // should fail as cte_1 is used for two ct expression.\n }\n assert.isTrue(slm.finishAndDispose());\n slm = new SequentialLogMatcher();\n // these two are generated by ECSQL. Its not clear why this message is logged twice.\n slm.append().error().category(\"ECDb\").message(/Common table 'cte_1' has 3 values for columns 2/gm);\n try {\n rows = await executeQuery(imodel1, `\n WITH\n cte_1 (a,b,c) AS (\n SELECT 100, 400\n )\n SELECT * from cte_1`);\n assert(false);\n } catch {\n assert(true); // number are to ct expression does not match select\n }\n assert.isTrue(slm.finishAndDispose());\n });\n});\n"]}
|
|
@@ -126,24 +126,24 @@ describe.skip("ConcurrentQueryLoad", () => {
|
|
|
126
126
|
createReader: (dbs) => {
|
|
127
127
|
const quries = [
|
|
128
128
|
{
|
|
129
|
-
sql: `
|
|
130
|
-
WITH sequence(n) AS (
|
|
131
|
-
SELECT 1
|
|
132
|
-
UNION ALL
|
|
133
|
-
SELECT n + 1 FROM sequence WHERE n < 10000
|
|
134
|
-
)
|
|
135
|
-
SELECT COUNT(*)
|
|
136
|
-
FROM bis.SpatialIndex i, sequence s
|
|
137
|
-
WHERE i.ECInstanceId MATCH iModel_spatial_overlap_aabb(
|
|
129
|
+
sql: `
|
|
130
|
+
WITH sequence(n) AS (
|
|
131
|
+
SELECT 1
|
|
132
|
+
UNION ALL
|
|
133
|
+
SELECT n + 1 FROM sequence WHERE n < 10000
|
|
134
|
+
)
|
|
135
|
+
SELECT COUNT(*)
|
|
136
|
+
FROM bis.SpatialIndex i, sequence s
|
|
137
|
+
WHERE i.ECInstanceId MATCH iModel_spatial_overlap_aabb(
|
|
138
138
|
iModel_bbox(random(), random(), random(), random(),random(), random()))`
|
|
139
139
|
},
|
|
140
140
|
{
|
|
141
|
-
sql: `
|
|
142
|
-
WITH sequence(n) AS (
|
|
143
|
-
SELECT 1
|
|
144
|
-
UNION ALL
|
|
145
|
-
SELECT n + 1 FROM sequence WHERE n < 1000000
|
|
146
|
-
)
|
|
141
|
+
sql: `
|
|
142
|
+
WITH sequence(n) AS (
|
|
143
|
+
SELECT 1
|
|
144
|
+
UNION ALL
|
|
145
|
+
SELECT n + 1 FROM sequence WHERE n < 1000000
|
|
146
|
+
)
|
|
147
147
|
SELECT COUNT(*) FROM sequence`
|
|
148
148
|
},
|
|
149
149
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConcurrentQueryLoad.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ConcurrentQueryLoad.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger, LogLevel, StopWatch } from \"@itwin/core-bentley\";\r\nimport { DbQueryConfig, ECSqlReader, QueryStats } from \"@itwin/core-common\";\r\nimport { expect } from \"chai\";\r\nimport { ConcurrentQuery } from \"../../ConcurrentQuery\";\r\nimport { ECDb } from \"../../ECDb\";\r\nimport { IModelDb, SnapshotDb } from \"../../IModelDb\";\r\nimport { _nativeDb } from \"../../core-backend\";\r\nimport { IModelTestUtils } from \"../IModelTestUtils\";\r\n\r\ninterface ITaskResult {\r\n stats: QueryStats;\r\n error?: any;\r\n}\r\n\r\ninterface ISenario {\r\n name: string;\r\n config?: DbQueryConfig;\r\n totalBatches: number;\r\n taskPerBatch: number;\r\n createReader: (db: ECDb | IModelDb) => ECSqlReader;\r\n}\r\n\r\n\r\nclass LoadSimulator {\r\n constructor(public db: ECDb | IModelDb, public senario: ISenario) { }\r\n private async runQueryTask(reader: ECSqlReader): Promise<ITaskResult> {\r\n try {\r\n while (await reader.step()) { }\r\n return { stats: reader.stats };\r\n } catch (err) {\r\n return { stats: reader.stats, error: err };\r\n }\r\n }\r\n\r\n public async run() {\r\n ConcurrentQuery.shutdown(this.db[_nativeDb]);\r\n if (this.senario.config) {\r\n const config = ConcurrentQuery.resetConfig(this.db[_nativeDb], this.senario.config);\r\n // eslint-disable-next-line no-console\r\n console.log(config);\r\n }\r\n const overalTime = new StopWatch();\r\n overalTime.start();\r\n const results: ITaskResult[] = [];\r\n for (let i = 0; i < this.senario.totalBatches; ++i) {\r\n const promises: Promise<ITaskResult>[] = [];\r\n const readerTasks = Array(this.senario.taskPerBatch).fill(undefined).map(() => this.senario.createReader(this.db));\r\n readerTasks.forEach((reader) => {\r\n promises.push(this.runQueryTask(reader));\r\n });\r\n results.push(... await Promise.all(promises));\r\n\r\n }\r\n overalTime.stop();\r\n const errors = results.filter((x) => x.error !== undefined);\r\n const errorsMap = new Map<string, number>();\r\n errors.forEach((x) => {\r\n if (x.error instanceof Error) {\r\n if (!errorsMap.has(x.error.message)) {\r\n errorsMap.set(x.error.message, 1);\r\n } else {\r\n errorsMap.set(x.error.message, errorsMap.get(x.error.message)! + 1);\r\n }\r\n } else {\r\n if (!errorsMap.has(\"error\")) {\r\n errorsMap.set(\"error\", 1);\r\n } else {\r\n errorsMap.set(\"error\", errorsMap.get(\"error\")! + 1);\r\n }\r\n }\r\n });\r\n const errorCount = errors.length;\r\n let backendCpuTime: bigint = BigInt(0);\r\n let backendTotalTime: bigint = BigInt(0);\r\n let backendMemUsed: bigint = BigInt(0);\r\n let backendRowsReturned: bigint = BigInt(0);\r\n let totalTime: bigint = BigInt(0);\r\n let retryCount: bigint = BigInt(0);\r\n let prepareTime: bigint = BigInt(0);\r\n\r\n // Calculate average\r\n results.forEach((r: ITaskResult) => {\r\n backendCpuTime += BigInt(r.stats.backendCpuTime);\r\n backendTotalTime += BigInt(r.stats.backendTotalTime);\r\n backendMemUsed += BigInt(r.stats.backendMemUsed);\r\n backendRowsReturned += BigInt(r.stats.backendRowsReturned);\r\n totalTime += BigInt(r.stats.totalTime);\r\n retryCount += BigInt(r.stats.retryCount);\r\n prepareTime += BigInt(r.stats.prepareTime);\r\n });\r\n\r\n backendCpuTime /= BigInt(results.length);\r\n backendTotalTime /= BigInt(results.length);\r\n backendMemUsed /= BigInt(results.length);\r\n backendRowsReturned /= BigInt(results.length);\r\n totalTime /= BigInt(results.length);\r\n retryCount /= BigInt(results.length);\r\n // prepareTime /= BigInt(results.length);\r\n\r\n return {\r\n result: {\r\n backendCpuTime,\r\n backendTotalTime,\r\n backendMemUsed,\r\n backendRowsReturned,\r\n totalTime,\r\n retryCount,\r\n prepareTime,\r\n },\r\n overalTimeInSec: overalTime.currentSeconds,\r\n errorCount,\r\n totalQueries: results.length,\r\n errorMap: errorsMap\r\n };\r\n\r\n }\r\n}\r\n\r\ndescribe.skip(\"ConcurrentQueryLoad\", () => {\r\n it(\"should run\", async () => {\r\n Logger.initializeToConsole();\r\n Logger.setLevel(\"ECDb.ConcurrentQuery\", LogLevel.Trace);\r\n // {\r\n // workerThreads: 4,\r\n // requestQueueSize: 2000,\r\n // ignorePriority: false,\r\n // ignoreDelay: true,\r\n // doNotUsePrimaryConnToPrepare: false,\r\n // autoShutdowWhenIdlelForSeconds: 300,\r\n // statementCacheSizePerWorker: 40,\r\n // monitorPollInterval: 1000,\r\n // memoryMapFileSize: 0,\r\n // allowTestingArgs: false,\r\n // globalQuota: { time: 60, memory: 8388608 }\r\n // }\r\n\r\n const senario: ISenario = {\r\n name: \"ConcurrentQueryLoad\",\r\n config: {\r\n\r\n },\r\n totalBatches: 1,\r\n taskPerBatch: 1,\r\n createReader: (dbs: ECDb | IModelDb) => {\r\n const quries = [\r\n {\r\n sql: `\r\n WITH sequence(n) AS (\r\n SELECT 1\r\n UNION ALL\r\n SELECT n + 1 FROM sequence WHERE n < 10000\r\n )\r\n SELECT COUNT(*)\r\n FROM bis.SpatialIndex i, sequence s\r\n WHERE i.ECInstanceId MATCH iModel_spatial_overlap_aabb(\r\n iModel_bbox(random(), random(), random(), random(),random(), random()))`\r\n },\r\n {\r\n sql: `\r\n WITH sequence(n) AS (\r\n SELECT 1\r\n UNION ALL\r\n SELECT n + 1 FROM sequence WHERE n < 1000000\r\n )\r\n SELECT COUNT(*) FROM sequence`\r\n },\r\n {\r\n sql: \"SELECT $ FROM bis.Element LIMIT 10000\"\r\n }\r\n ];\r\n const idx = Math.floor(Math.random() * quries.length);\r\n return dbs.createQueryReader(quries[idx].sql);\r\n }\r\n };\r\n\r\n const verySmallFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\r\n const db = SnapshotDb.openFile(verySmallFile);\r\n const simulator = new LoadSimulator(db, senario);\r\n const result = await simulator.run();\r\n // eslint-disable-next-line no-console\r\n console.log(result);\r\n db.close();\r\n expect(result.errorCount).to.be.equal(0);\r\n });\r\n\r\n});"]}
|
|
1
|
+
{"version":3,"file":"ConcurrentQueryLoad.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ConcurrentQueryLoad.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger, LogLevel, StopWatch } from \"@itwin/core-bentley\";\nimport { DbQueryConfig, ECSqlReader, QueryStats } from \"@itwin/core-common\";\nimport { expect } from \"chai\";\nimport { ConcurrentQuery } from \"../../ConcurrentQuery\";\nimport { ECDb } from \"../../ECDb\";\nimport { IModelDb, SnapshotDb } from \"../../IModelDb\";\nimport { _nativeDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ninterface ITaskResult {\n stats: QueryStats;\n error?: any;\n}\n\ninterface ISenario {\n name: string;\n config?: DbQueryConfig;\n totalBatches: number;\n taskPerBatch: number;\n createReader: (db: ECDb | IModelDb) => ECSqlReader;\n}\n\n\nclass LoadSimulator {\n constructor(public db: ECDb | IModelDb, public senario: ISenario) { }\n private async runQueryTask(reader: ECSqlReader): Promise<ITaskResult> {\n try {\n while (await reader.step()) { }\n return { stats: reader.stats };\n } catch (err) {\n return { stats: reader.stats, error: err };\n }\n }\n\n public async run() {\n ConcurrentQuery.shutdown(this.db[_nativeDb]);\n if (this.senario.config) {\n const config = ConcurrentQuery.resetConfig(this.db[_nativeDb], this.senario.config);\n // eslint-disable-next-line no-console\n console.log(config);\n }\n const overalTime = new StopWatch();\n overalTime.start();\n const results: ITaskResult[] = [];\n for (let i = 0; i < this.senario.totalBatches; ++i) {\n const promises: Promise<ITaskResult>[] = [];\n const readerTasks = Array(this.senario.taskPerBatch).fill(undefined).map(() => this.senario.createReader(this.db));\n readerTasks.forEach((reader) => {\n promises.push(this.runQueryTask(reader));\n });\n results.push(... await Promise.all(promises));\n\n }\n overalTime.stop();\n const errors = results.filter((x) => x.error !== undefined);\n const errorsMap = new Map<string, number>();\n errors.forEach((x) => {\n if (x.error instanceof Error) {\n if (!errorsMap.has(x.error.message)) {\n errorsMap.set(x.error.message, 1);\n } else {\n errorsMap.set(x.error.message, errorsMap.get(x.error.message)! + 1);\n }\n } else {\n if (!errorsMap.has(\"error\")) {\n errorsMap.set(\"error\", 1);\n } else {\n errorsMap.set(\"error\", errorsMap.get(\"error\")! + 1);\n }\n }\n });\n const errorCount = errors.length;\n let backendCpuTime: bigint = BigInt(0);\n let backendTotalTime: bigint = BigInt(0);\n let backendMemUsed: bigint = BigInt(0);\n let backendRowsReturned: bigint = BigInt(0);\n let totalTime: bigint = BigInt(0);\n let retryCount: bigint = BigInt(0);\n let prepareTime: bigint = BigInt(0);\n\n // Calculate average\n results.forEach((r: ITaskResult) => {\n backendCpuTime += BigInt(r.stats.backendCpuTime);\n backendTotalTime += BigInt(r.stats.backendTotalTime);\n backendMemUsed += BigInt(r.stats.backendMemUsed);\n backendRowsReturned += BigInt(r.stats.backendRowsReturned);\n totalTime += BigInt(r.stats.totalTime);\n retryCount += BigInt(r.stats.retryCount);\n prepareTime += BigInt(r.stats.prepareTime);\n });\n\n backendCpuTime /= BigInt(results.length);\n backendTotalTime /= BigInt(results.length);\n backendMemUsed /= BigInt(results.length);\n backendRowsReturned /= BigInt(results.length);\n totalTime /= BigInt(results.length);\n retryCount /= BigInt(results.length);\n // prepareTime /= BigInt(results.length);\n\n return {\n result: {\n backendCpuTime,\n backendTotalTime,\n backendMemUsed,\n backendRowsReturned,\n totalTime,\n retryCount,\n prepareTime,\n },\n overalTimeInSec: overalTime.currentSeconds,\n errorCount,\n totalQueries: results.length,\n errorMap: errorsMap\n };\n\n }\n}\n\ndescribe.skip(\"ConcurrentQueryLoad\", () => {\n it(\"should run\", async () => {\n Logger.initializeToConsole();\n Logger.setLevel(\"ECDb.ConcurrentQuery\", LogLevel.Trace);\n // {\n // workerThreads: 4,\n // requestQueueSize: 2000,\n // ignorePriority: false,\n // ignoreDelay: true,\n // doNotUsePrimaryConnToPrepare: false,\n // autoShutdowWhenIdlelForSeconds: 300,\n // statementCacheSizePerWorker: 40,\n // monitorPollInterval: 1000,\n // memoryMapFileSize: 0,\n // allowTestingArgs: false,\n // globalQuota: { time: 60, memory: 8388608 }\n // }\n\n const senario: ISenario = {\n name: \"ConcurrentQueryLoad\",\n config: {\n\n },\n totalBatches: 1,\n taskPerBatch: 1,\n createReader: (dbs: ECDb | IModelDb) => {\n const quries = [\n {\n sql: `\n WITH sequence(n) AS (\n SELECT 1\n UNION ALL\n SELECT n + 1 FROM sequence WHERE n < 10000\n )\n SELECT COUNT(*)\n FROM bis.SpatialIndex i, sequence s\n WHERE i.ECInstanceId MATCH iModel_spatial_overlap_aabb(\n iModel_bbox(random(), random(), random(), random(),random(), random()))`\n },\n {\n sql: `\n WITH sequence(n) AS (\n SELECT 1\n UNION ALL\n SELECT n + 1 FROM sequence WHERE n < 1000000\n )\n SELECT COUNT(*) FROM sequence`\n },\n {\n sql: \"SELECT $ FROM bis.Element LIMIT 10000\"\n }\n ];\n const idx = Math.floor(Math.random() * quries.length);\n return dbs.createQueryReader(quries[idx].sql);\n }\n };\n\n const verySmallFile = IModelTestUtils.resolveAssetFile(\"test.bim\");\n const db = SnapshotDb.openFile(verySmallFile);\n const simulator = new LoadSimulator(db, senario);\n const result = await simulator.run();\n // eslint-disable-next-line no-console\n console.log(result);\n db.close();\n expect(result.errorCount).to.be.equal(0);\n });\n\n});"]}
|
|
@@ -180,11 +180,11 @@ describe("ECDb", () => {
|
|
|
180
180
|
try {
|
|
181
181
|
const fileName1 = "source_file.ecdb";
|
|
182
182
|
const ecdbPath1 = path.join(outDir, fileName1);
|
|
183
|
-
const testECDb = __addDisposableResource(env_8, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
184
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
185
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
186
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
187
|
-
</ECEntityClass>
|
|
183
|
+
const testECDb = __addDisposableResource(env_8, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
184
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
185
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
186
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
187
|
+
</ECEntityClass>
|
|
188
188
|
</ECSchema>`), false);
|
|
189
189
|
assert.isTrue(testECDb.isOpen);
|
|
190
190
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -196,9 +196,9 @@ describe("ECDb", () => {
|
|
|
196
196
|
return res.id;
|
|
197
197
|
});
|
|
198
198
|
// override profile version to 55.0.0 which is currently not supported
|
|
199
|
-
testECDb.withSqliteStatement(`
|
|
200
|
-
UPDATE be_Prop SET
|
|
201
|
-
StrData = '{"major":55,"minor":0,"sub1":0,"sub2":0}'
|
|
199
|
+
testECDb.withSqliteStatement(`
|
|
200
|
+
UPDATE be_Prop SET
|
|
201
|
+
StrData = '{"major":55,"minor":0,"sub1":0,"sub2":0}'
|
|
202
202
|
WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`, (stmt) => { stmt.step(); });
|
|
203
203
|
testECDb.saveChanges();
|
|
204
204
|
const runDbListPragmaUsingStatement = (ecdb) => {
|
|
@@ -300,11 +300,11 @@ describe("ECDb", () => {
|
|
|
300
300
|
try {
|
|
301
301
|
const fileName1 = "source_file.ecdb";
|
|
302
302
|
const ecdbPath1 = path.join(outDir, fileName1);
|
|
303
|
-
const testECDb = __addDisposableResource(env_9, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
304
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
305
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
306
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
307
|
-
</ECEntityClass>
|
|
303
|
+
const testECDb = __addDisposableResource(env_9, ECDbTestHelper.createECDb(outDir, fileName1, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
304
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
305
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
306
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
307
|
+
</ECEntityClass>
|
|
308
308
|
</ECSchema>`), false);
|
|
309
309
|
assert.isTrue(testECDb.isOpen);
|
|
310
310
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -404,11 +404,11 @@ describe("ECDb", () => {
|
|
|
404
404
|
{
|
|
405
405
|
const env_11 = { stack: [], error: void 0, hasError: false };
|
|
406
406
|
try {
|
|
407
|
-
const testECDb = __addDisposableResource(env_11, ECDbTestHelper.createECDb(outDir, fileName, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
408
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
409
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
410
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
411
|
-
</ECEntityClass>
|
|
407
|
+
const testECDb = __addDisposableResource(env_11, ECDbTestHelper.createECDb(outDir, fileName, `<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.1">
|
|
408
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
409
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
410
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
411
|
+
</ECEntityClass>
|
|
412
412
|
</ECSchema>`), false);
|
|
413
413
|
assert.isTrue(testECDb.isOpen);
|
|
414
414
|
id = testECDb.withCachedWriteStatement("INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)", (stmt) => {
|
|
@@ -562,19 +562,19 @@ describe("ECDb", () => {
|
|
|
562
562
|
it("test unit labels in composite formats", () => {
|
|
563
563
|
const ecdb = ECDbTestHelper.createECDb(outDir, "TestCompositeFormats.ecdb");
|
|
564
564
|
const xmlpathOriginal = path.join(outDir, "compositeFormats1.ecschema.xml");
|
|
565
|
-
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="utf-8" ?>
|
|
566
|
-
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
567
|
-
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
568
|
-
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
569
|
-
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
570
|
-
<Composite>
|
|
571
|
-
<Unit>u:KM</Unit>
|
|
572
|
-
<Unit label="m">TestUnit</Unit>
|
|
573
|
-
<Unit label="">u:CM</Unit>
|
|
574
|
-
<Unit label="mm">u:MM</Unit>
|
|
575
|
-
</Composite>
|
|
576
|
-
</Format>
|
|
577
|
-
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
565
|
+
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="utf-8" ?>
|
|
566
|
+
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.0" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
567
|
+
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
568
|
+
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
569
|
+
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
570
|
+
<Composite>
|
|
571
|
+
<Unit>u:KM</Unit>
|
|
572
|
+
<Unit label="m">TestUnit</Unit>
|
|
573
|
+
<Unit label="">u:CM</Unit>
|
|
574
|
+
<Unit label="mm">u:MM</Unit>
|
|
575
|
+
</Composite>
|
|
576
|
+
</Format>
|
|
577
|
+
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
578
578
|
</ECSchema>`);
|
|
579
579
|
ecdb.importSchema(xmlpathOriginal);
|
|
580
580
|
ecdb.saveChanges();
|
|
@@ -588,19 +588,19 @@ describe("ECDb", () => {
|
|
|
588
588
|
}
|
|
589
589
|
});
|
|
590
590
|
const xmlpathUpdated = path.join(outDir, "compositeFormats2.ecschema.xml");
|
|
591
|
-
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="utf-8" ?>
|
|
592
|
-
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
593
|
-
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
594
|
-
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
595
|
-
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
596
|
-
<Composite spacer="=" includeZero="False">
|
|
597
|
-
<Unit label="">u:KM</Unit>
|
|
598
|
-
<Unit label="m">TestUnit</Unit>
|
|
599
|
-
<Unit>u:CM</Unit>
|
|
600
|
-
<Unit label="mm">u:MM</Unit>
|
|
601
|
-
</Composite>
|
|
602
|
-
</Format>
|
|
603
|
-
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
591
|
+
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="utf-8" ?>
|
|
592
|
+
<ECSchema schemaName="TestCompositeFormats" alias="tcf" version="1.0.1" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
593
|
+
<ECSchemaReference name="Units" version="01.00.00" alias="u" />
|
|
594
|
+
<Unit typeName="TestUnit" displayLabel="Test Unit" definition="u:M" numerator="1.0" phenomenon="u:LENGTH" unitSystem="u:METRIC" />
|
|
595
|
+
<Format typeName="TestFormat" displayLabel="TestFormat" roundFactor="0.3" type="Fractional" showSignOption="OnlyNegative" formatTraits="TrailZeroes|KeepSingleZero" precision="4" decimalSeparator="." thousandSeparator="," uomSeparator=" ">
|
|
596
|
+
<Composite spacer="=" includeZero="False">
|
|
597
|
+
<Unit label="">u:KM</Unit>
|
|
598
|
+
<Unit label="m">TestUnit</Unit>
|
|
599
|
+
<Unit>u:CM</Unit>
|
|
600
|
+
<Unit label="mm">u:MM</Unit>
|
|
601
|
+
</Composite>
|
|
602
|
+
</Format>
|
|
603
|
+
<KindOfQuantity typeName="TestKOQ2" description="Test KOQ2" displayLabel="TestKOQ2" persistenceUnit="u:M" presentationUnits="TestFormat" relativeError="10e-3" />
|
|
604
604
|
</ECSchema>`);
|
|
605
605
|
ecdb.importSchema(xmlpathUpdated);
|
|
606
606
|
ecdb.saveChanges();
|
|
@@ -618,23 +618,23 @@ describe("ECDb", () => {
|
|
|
618
618
|
it("should make importSchema fail if new schema changes are observed without version bump", () => {
|
|
619
619
|
const ecdb = ECDbTestHelper.createECDb(outDir, "importSchemaNoVersionBump.ecdb");
|
|
620
620
|
const xmlpathOriginal = path.join(outDir, "importSchemaNoVersionBump1.ecschema.xml");
|
|
621
|
-
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="UTF-8"?>
|
|
622
|
-
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
623
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
624
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
625
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
626
|
-
</ECEntityClass>
|
|
621
|
+
IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version="1.0" encoding="UTF-8"?>
|
|
622
|
+
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
623
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
624
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
625
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
626
|
+
</ECEntityClass>
|
|
627
627
|
</ECSchema>`);
|
|
628
628
|
ecdb.importSchema(xmlpathOriginal);
|
|
629
629
|
ecdb.saveChanges();
|
|
630
630
|
const xmlpathUpdated = path.join(outDir, "importSchemaNoVersionBump2.ecschema.xml");
|
|
631
|
-
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="UTF-8"?>
|
|
632
|
-
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
633
|
-
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
634
|
-
<ECProperty propertyName="Name" typeName="string"/>
|
|
635
|
-
<ECProperty propertyName="Age" typeName="int"/>
|
|
636
|
-
<ECProperty propertyName="Height" typeName="int"/>
|
|
637
|
-
</ECEntityClass>
|
|
631
|
+
IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version="1.0" encoding="UTF-8"?>
|
|
632
|
+
<ECSchema schemaName="Test" alias="test" version="01.00.00" xmlns="http://www.bentley.com/schemas/Bentley.ECXML.3.2">
|
|
633
|
+
<ECEntityClass typeName="Person" modifier="Sealed">
|
|
634
|
+
<ECProperty propertyName="Name" typeName="string"/>
|
|
635
|
+
<ECProperty propertyName="Age" typeName="int"/>
|
|
636
|
+
<ECProperty propertyName="Height" typeName="int"/>
|
|
637
|
+
</ECEntityClass>
|
|
638
638
|
</ECSchema>`);
|
|
639
639
|
let calledCategory = "";
|
|
640
640
|
let calledMessage = "";
|