@itwin/core-backend 5.1.0-dev.9 → 5.2.0-dev.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.
Files changed (441) hide show
  1. package/CHANGELOG.md +112 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +1 -1
  3. package/lib/cjs/BackendHubAccess.js +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BisCoreSchema.d.ts.map +1 -1
  6. package/lib/cjs/BisCoreSchema.js +4 -2
  7. package/lib/cjs/BisCoreSchema.js.map +1 -1
  8. package/lib/cjs/BriefcaseManager.d.ts +10 -2
  9. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseManager.js +16 -0
  11. package/lib/cjs/BriefcaseManager.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +4 -4
  13. package/lib/cjs/Category.js +4 -4
  14. package/lib/cjs/Category.js.map +1 -1
  15. package/lib/cjs/ChangesetECAdaptor.d.ts +67 -8
  16. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  17. package/lib/cjs/ChangesetECAdaptor.js +248 -33
  18. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  19. package/lib/cjs/ClassRegistry.d.ts +9 -1
  20. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  21. package/lib/cjs/ClassRegistry.js +9 -1
  22. package/lib/cjs/ClassRegistry.js.map +1 -1
  23. package/lib/cjs/CloudSqlite.js +1 -1
  24. package/lib/cjs/CloudSqlite.js.map +1 -1
  25. package/lib/cjs/CodeSpecs.d.ts +1 -1
  26. package/lib/cjs/CodeSpecs.js +1 -1
  27. package/lib/cjs/CodeSpecs.js.map +1 -1
  28. package/lib/cjs/DisplayStyle.d.ts +4 -4
  29. package/lib/cjs/DisplayStyle.js +3 -3
  30. package/lib/cjs/DisplayStyle.js.map +1 -1
  31. package/lib/cjs/ECDb.d.ts +4 -4
  32. package/lib/cjs/ECDb.d.ts.map +1 -1
  33. package/lib/cjs/ECDb.js +4 -4
  34. package/lib/cjs/ECDb.js.map +1 -1
  35. package/lib/cjs/ECSqlStatement.d.ts +15 -6
  36. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  37. package/lib/cjs/ECSqlStatement.js +19 -4
  38. package/lib/cjs/ECSqlStatement.js.map +1 -1
  39. package/lib/cjs/Element.d.ts +54 -51
  40. package/lib/cjs/Element.d.ts.map +1 -1
  41. package/lib/cjs/Element.js +67 -52
  42. package/lib/cjs/Element.js.map +1 -1
  43. package/lib/cjs/ElementAspect.d.ts +8 -8
  44. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  45. package/lib/cjs/ElementAspect.js +8 -8
  46. package/lib/cjs/ElementAspect.js.map +1 -1
  47. package/lib/cjs/Entity.d.ts +10 -7
  48. package/lib/cjs/Entity.d.ts.map +1 -1
  49. package/lib/cjs/Entity.js +35 -13
  50. package/lib/cjs/Entity.js.map +1 -1
  51. package/lib/cjs/ExportGraphics.d.ts +54 -8
  52. package/lib/cjs/ExportGraphics.d.ts.map +1 -1
  53. package/lib/cjs/ExportGraphics.js +158 -59
  54. package/lib/cjs/ExportGraphics.js.map +1 -1
  55. package/lib/cjs/GeographicCRSServices.d.ts +6 -2
  56. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  57. package/lib/cjs/GeographicCRSServices.js +1 -1
  58. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  59. package/lib/cjs/IModelDb.d.ts +37 -26
  60. package/lib/cjs/IModelDb.d.ts.map +1 -1
  61. package/lib/cjs/IModelDb.js +124 -47
  62. package/lib/cjs/IModelDb.js.map +1 -1
  63. package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
  64. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  65. package/lib/cjs/IModelElementCloneContext.js +1 -1
  66. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  67. package/lib/cjs/IModelHost.d.ts +2 -3
  68. package/lib/cjs/IModelHost.d.ts.map +1 -1
  69. package/lib/cjs/IModelHost.js +2 -3
  70. package/lib/cjs/IModelHost.js.map +1 -1
  71. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts +36 -0
  72. package/lib/cjs/IModelIncrementalSchemaLocater.d.ts.map +1 -0
  73. package/lib/cjs/IModelIncrementalSchemaLocater.js +69 -0
  74. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -0
  75. package/lib/cjs/LocalHub.d.ts.map +1 -1
  76. package/lib/cjs/LocalHub.js +6 -4
  77. package/lib/cjs/LocalHub.js.map +1 -1
  78. package/lib/cjs/Material.d.ts +4 -3
  79. package/lib/cjs/Material.d.ts.map +1 -1
  80. package/lib/cjs/Material.js +5 -5
  81. package/lib/cjs/Material.js.map +1 -1
  82. package/lib/cjs/Model.d.ts +22 -22
  83. package/lib/cjs/Model.js +22 -22
  84. package/lib/cjs/Model.js.map +1 -1
  85. package/lib/cjs/Relationship.d.ts +3 -0
  86. package/lib/cjs/Relationship.d.ts.map +1 -1
  87. package/lib/cjs/Relationship.js +15 -0
  88. package/lib/cjs/Relationship.js.map +1 -1
  89. package/lib/cjs/SQLiteDb.d.ts +1 -1
  90. package/lib/cjs/SQLiteDb.js +1 -1
  91. package/lib/cjs/SQLiteDb.js.map +1 -1
  92. package/lib/cjs/Schema.d.ts +25 -0
  93. package/lib/cjs/Schema.d.ts.map +1 -1
  94. package/lib/cjs/Schema.js +25 -0
  95. package/lib/cjs/Schema.js.map +1 -1
  96. package/lib/cjs/SqliteStatement.d.ts +1 -1
  97. package/lib/cjs/SqliteStatement.d.ts.map +1 -1
  98. package/lib/cjs/SqliteStatement.js +1 -1
  99. package/lib/cjs/SqliteStatement.js.map +1 -1
  100. package/lib/cjs/Texture.d.ts +1 -1
  101. package/lib/cjs/Texture.js +1 -1
  102. package/lib/cjs/Texture.js.map +1 -1
  103. package/lib/cjs/TxnManager.d.ts +4 -4
  104. package/lib/cjs/TxnManager.js +1 -1
  105. package/lib/cjs/TxnManager.js.map +1 -1
  106. package/lib/cjs/ViewDefinition.d.ts +40 -14
  107. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  108. package/lib/cjs/ViewDefinition.js +42 -14
  109. package/lib/cjs/ViewDefinition.js.map +1 -1
  110. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +61 -0
  111. package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -0
  112. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +110 -0
  113. package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -0
  114. package/lib/cjs/annotations/FrameGeometry.d.ts +51 -0
  115. package/lib/cjs/annotations/FrameGeometry.d.ts.map +1 -0
  116. package/lib/cjs/annotations/FrameGeometry.js +249 -0
  117. package/lib/cjs/annotations/FrameGeometry.js.map +1 -0
  118. package/lib/cjs/annotations/LeaderGeometry.d.ts +53 -0
  119. package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -0
  120. package/lib/cjs/annotations/LeaderGeometry.js +184 -0
  121. package/lib/cjs/annotations/LeaderGeometry.js.map +1 -0
  122. package/lib/cjs/annotations/TextAnnotationElement.d.ts +204 -0
  123. package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -0
  124. package/lib/cjs/annotations/TextAnnotationElement.js +411 -0
  125. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -0
  126. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts +33 -0
  127. package/lib/cjs/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  128. package/lib/cjs/annotations/TextAnnotationGeometry.js +137 -0
  129. package/lib/cjs/annotations/TextAnnotationGeometry.js.map +1 -0
  130. package/lib/cjs/annotations/TextBlockGeometry.d.ts +16 -0
  131. package/lib/cjs/annotations/TextBlockGeometry.d.ts.map +1 -0
  132. package/lib/cjs/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +28 -70
  133. package/lib/cjs/annotations/TextBlockGeometry.js.map +1 -0
  134. package/lib/cjs/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +69 -22
  135. package/lib/cjs/annotations/TextBlockLayout.d.ts.map +1 -0
  136. package/lib/cjs/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +174 -49
  137. package/lib/cjs/annotations/TextBlockLayout.js.map +1 -0
  138. package/lib/cjs/core-backend.d.ts +7 -3
  139. package/lib/cjs/core-backend.d.ts.map +1 -1
  140. package/lib/cjs/core-backend.js +27 -6
  141. package/lib/cjs/core-backend.js.map +1 -1
  142. package/lib/cjs/internal/ElementLRUCache.d.ts +23 -0
  143. package/lib/cjs/internal/ElementLRUCache.d.ts.map +1 -1
  144. package/lib/cjs/internal/ElementLRUCache.js +167 -3
  145. package/lib/cjs/internal/ElementLRUCache.js.map +1 -1
  146. package/lib/cjs/internal/Symbols.d.ts +1 -0
  147. package/lib/cjs/internal/Symbols.d.ts.map +1 -1
  148. package/lib/cjs/internal/Symbols.js +2 -1
  149. package/lib/cjs/internal/Symbols.js.map +1 -1
  150. package/lib/cjs/internal/annotations/fields.d.ts +22 -0
  151. package/lib/cjs/internal/annotations/fields.d.ts.map +1 -0
  152. package/lib/cjs/internal/annotations/fields.js +237 -0
  153. package/lib/cjs/internal/annotations/fields.js.map +1 -0
  154. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  155. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +1 -1
  156. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  157. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  158. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  159. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  160. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  161. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  162. package/lib/cjs/workspace/Workspace.d.ts +0 -1
  163. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  164. package/lib/cjs/workspace/Workspace.js.map +1 -1
  165. package/lib/esm/BackendHubAccess.d.ts +1 -1
  166. package/lib/esm/BackendHubAccess.js +1 -1
  167. package/lib/esm/BackendHubAccess.js.map +1 -1
  168. package/lib/esm/BisCoreSchema.d.ts.map +1 -1
  169. package/lib/esm/BisCoreSchema.js +4 -2
  170. package/lib/esm/BisCoreSchema.js.map +1 -1
  171. package/lib/esm/BriefcaseManager.d.ts +10 -2
  172. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  173. package/lib/esm/BriefcaseManager.js +17 -1
  174. package/lib/esm/BriefcaseManager.js.map +1 -1
  175. package/lib/esm/Category.d.ts +4 -4
  176. package/lib/esm/Category.js +4 -4
  177. package/lib/esm/Category.js.map +1 -1
  178. package/lib/esm/ChangesetECAdaptor.d.ts +67 -8
  179. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  180. package/lib/esm/ChangesetECAdaptor.js +248 -33
  181. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  182. package/lib/esm/ClassRegistry.d.ts +9 -1
  183. package/lib/esm/ClassRegistry.d.ts.map +1 -1
  184. package/lib/esm/ClassRegistry.js +9 -1
  185. package/lib/esm/ClassRegistry.js.map +1 -1
  186. package/lib/esm/CloudSqlite.js +1 -1
  187. package/lib/esm/CloudSqlite.js.map +1 -1
  188. package/lib/esm/CodeSpecs.d.ts +1 -1
  189. package/lib/esm/CodeSpecs.js +1 -1
  190. package/lib/esm/CodeSpecs.js.map +1 -1
  191. package/lib/esm/DisplayStyle.d.ts +4 -4
  192. package/lib/esm/DisplayStyle.js +3 -3
  193. package/lib/esm/DisplayStyle.js.map +1 -1
  194. package/lib/esm/ECDb.d.ts +4 -4
  195. package/lib/esm/ECDb.d.ts.map +1 -1
  196. package/lib/esm/ECDb.js +4 -4
  197. package/lib/esm/ECDb.js.map +1 -1
  198. package/lib/esm/ECSqlStatement.d.ts +15 -6
  199. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  200. package/lib/esm/ECSqlStatement.js +19 -4
  201. package/lib/esm/ECSqlStatement.js.map +1 -1
  202. package/lib/esm/Element.d.ts +54 -51
  203. package/lib/esm/Element.d.ts.map +1 -1
  204. package/lib/esm/Element.js +67 -52
  205. package/lib/esm/Element.js.map +1 -1
  206. package/lib/esm/ElementAspect.d.ts +8 -8
  207. package/lib/esm/ElementAspect.d.ts.map +1 -1
  208. package/lib/esm/ElementAspect.js +8 -8
  209. package/lib/esm/ElementAspect.js.map +1 -1
  210. package/lib/esm/Entity.d.ts +10 -7
  211. package/lib/esm/Entity.d.ts.map +1 -1
  212. package/lib/esm/Entity.js +36 -14
  213. package/lib/esm/Entity.js.map +1 -1
  214. package/lib/esm/ExportGraphics.d.ts +54 -8
  215. package/lib/esm/ExportGraphics.d.ts.map +1 -1
  216. package/lib/esm/ExportGraphics.js +156 -58
  217. package/lib/esm/ExportGraphics.js.map +1 -1
  218. package/lib/esm/GeographicCRSServices.d.ts +6 -2
  219. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  220. package/lib/esm/GeographicCRSServices.js +1 -1
  221. package/lib/esm/GeographicCRSServices.js.map +1 -1
  222. package/lib/esm/IModelDb.d.ts +37 -26
  223. package/lib/esm/IModelDb.d.ts.map +1 -1
  224. package/lib/esm/IModelDb.js +128 -51
  225. package/lib/esm/IModelDb.js.map +1 -1
  226. package/lib/esm/IModelElementCloneContext.d.ts +1 -1
  227. package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
  228. package/lib/esm/IModelElementCloneContext.js +1 -1
  229. package/lib/esm/IModelElementCloneContext.js.map +1 -1
  230. package/lib/esm/IModelHost.d.ts +2 -3
  231. package/lib/esm/IModelHost.d.ts.map +1 -1
  232. package/lib/esm/IModelHost.js +2 -3
  233. package/lib/esm/IModelHost.js.map +1 -1
  234. package/lib/esm/IModelIncrementalSchemaLocater.d.ts +36 -0
  235. package/lib/esm/IModelIncrementalSchemaLocater.d.ts.map +1 -0
  236. package/lib/esm/IModelIncrementalSchemaLocater.js +65 -0
  237. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -0
  238. package/lib/esm/LocalHub.d.ts.map +1 -1
  239. package/lib/esm/LocalHub.js +6 -4
  240. package/lib/esm/LocalHub.js.map +1 -1
  241. package/lib/esm/Material.d.ts +4 -3
  242. package/lib/esm/Material.d.ts.map +1 -1
  243. package/lib/esm/Material.js +5 -5
  244. package/lib/esm/Material.js.map +1 -1
  245. package/lib/esm/Model.d.ts +22 -22
  246. package/lib/esm/Model.js +22 -22
  247. package/lib/esm/Model.js.map +1 -1
  248. package/lib/esm/Relationship.d.ts +3 -0
  249. package/lib/esm/Relationship.d.ts.map +1 -1
  250. package/lib/esm/Relationship.js +15 -0
  251. package/lib/esm/Relationship.js.map +1 -1
  252. package/lib/esm/SQLiteDb.d.ts +1 -1
  253. package/lib/esm/SQLiteDb.js +1 -1
  254. package/lib/esm/SQLiteDb.js.map +1 -1
  255. package/lib/esm/Schema.d.ts +25 -0
  256. package/lib/esm/Schema.d.ts.map +1 -1
  257. package/lib/esm/Schema.js +25 -0
  258. package/lib/esm/Schema.js.map +1 -1
  259. package/lib/esm/SqliteStatement.d.ts +1 -1
  260. package/lib/esm/SqliteStatement.d.ts.map +1 -1
  261. package/lib/esm/SqliteStatement.js +1 -1
  262. package/lib/esm/SqliteStatement.js.map +1 -1
  263. package/lib/esm/Texture.d.ts +1 -1
  264. package/lib/esm/Texture.js +1 -1
  265. package/lib/esm/Texture.js.map +1 -1
  266. package/lib/esm/TxnManager.d.ts +4 -4
  267. package/lib/esm/TxnManager.js +1 -1
  268. package/lib/esm/TxnManager.js.map +1 -1
  269. package/lib/esm/ViewDefinition.d.ts +40 -14
  270. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  271. package/lib/esm/ViewDefinition.js +42 -14
  272. package/lib/esm/ViewDefinition.js.map +1 -1
  273. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +61 -0
  274. package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -0
  275. package/lib/esm/annotations/ElementDrivesTextAnnotation.js +105 -0
  276. package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -0
  277. package/lib/esm/annotations/FrameGeometry.d.ts +51 -0
  278. package/lib/esm/annotations/FrameGeometry.d.ts.map +1 -0
  279. package/lib/esm/annotations/FrameGeometry.js +244 -0
  280. package/lib/esm/annotations/FrameGeometry.js.map +1 -0
  281. package/lib/esm/annotations/LeaderGeometry.d.ts +53 -0
  282. package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -0
  283. package/lib/esm/annotations/LeaderGeometry.js +179 -0
  284. package/lib/esm/annotations/LeaderGeometry.js.map +1 -0
  285. package/lib/esm/annotations/TextAnnotationElement.d.ts +204 -0
  286. package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -0
  287. package/lib/esm/annotations/TextAnnotationElement.js +405 -0
  288. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -0
  289. package/lib/esm/annotations/TextAnnotationGeometry.d.ts +33 -0
  290. package/lib/esm/annotations/TextAnnotationGeometry.d.ts.map +1 -0
  291. package/lib/esm/annotations/TextAnnotationGeometry.js +134 -0
  292. package/lib/esm/annotations/TextAnnotationGeometry.js.map +1 -0
  293. package/lib/esm/annotations/TextBlockGeometry.d.ts +16 -0
  294. package/lib/esm/annotations/TextBlockGeometry.d.ts.map +1 -0
  295. package/lib/esm/{TextAnnotationGeometry.js → annotations/TextBlockGeometry.js} +28 -70
  296. package/lib/esm/annotations/TextBlockGeometry.js.map +1 -0
  297. package/lib/esm/{TextAnnotationLayout.d.ts → annotations/TextBlockLayout.d.ts} +69 -22
  298. package/lib/esm/annotations/TextBlockLayout.d.ts.map +1 -0
  299. package/lib/esm/{TextAnnotationLayout.js → annotations/TextBlockLayout.js} +172 -48
  300. package/lib/esm/annotations/TextBlockLayout.js.map +1 -0
  301. package/lib/esm/core-backend.d.ts +7 -3
  302. package/lib/esm/core-backend.d.ts.map +1 -1
  303. package/lib/esm/core-backend.js +27 -3
  304. package/lib/esm/core-backend.js.map +1 -1
  305. package/lib/esm/internal/ElementLRUCache.d.ts +23 -0
  306. package/lib/esm/internal/ElementLRUCache.d.ts.map +1 -1
  307. package/lib/esm/internal/ElementLRUCache.js +165 -2
  308. package/lib/esm/internal/ElementLRUCache.js.map +1 -1
  309. package/lib/esm/internal/Symbols.d.ts +1 -0
  310. package/lib/esm/internal/Symbols.d.ts.map +1 -1
  311. package/lib/esm/internal/Symbols.js +1 -0
  312. package/lib/esm/internal/Symbols.js.map +1 -1
  313. package/lib/esm/internal/annotations/fields.d.ts +22 -0
  314. package/lib/esm/internal/annotations/fields.d.ts.map +1 -0
  315. package/lib/esm/internal/annotations/fields.js +231 -0
  316. package/lib/esm/internal/annotations/fields.js.map +1 -0
  317. package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +1 -1
  318. package/lib/esm/rpc-impl/IModelReadRpcImpl.js +1 -1
  319. package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  320. package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
  321. package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  322. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
  323. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
  324. package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  325. package/lib/esm/test/AnnotationTestUtils.d.ts +15 -0
  326. package/lib/esm/test/AnnotationTestUtils.d.ts.map +1 -0
  327. package/lib/esm/test/AnnotationTestUtils.js +41 -0
  328. package/lib/esm/test/AnnotationTestUtils.js.map +1 -0
  329. package/lib/esm/test/ElementLRUCache.test.js +224 -1
  330. package/lib/esm/test/ElementLRUCache.test.js.map +1 -1
  331. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  332. package/lib/esm/test/IModelTestUtils.js +1 -0
  333. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  334. package/lib/esm/test/TestUtils.d.ts +1 -1
  335. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  336. package/lib/esm/test/TestUtils.js +1 -1
  337. package/lib/esm/test/TestUtils.js.map +1 -1
  338. package/lib/esm/test/annotations/Fields.test.d.ts +2 -0
  339. package/lib/esm/test/annotations/Fields.test.d.ts.map +1 -0
  340. package/lib/esm/test/annotations/Fields.test.js +576 -0
  341. package/lib/esm/test/annotations/Fields.test.js.map +1 -0
  342. package/lib/esm/test/annotations/FrameGeometry.test.d.ts +2 -0
  343. package/lib/esm/test/annotations/FrameGeometry.test.d.ts.map +1 -0
  344. package/lib/esm/test/annotations/FrameGeometry.test.js +86 -0
  345. package/lib/esm/test/annotations/FrameGeometry.test.js.map +1 -0
  346. package/lib/esm/test/annotations/LeaderGeometry.test.d.ts +2 -0
  347. package/lib/esm/test/annotations/LeaderGeometry.test.d.ts.map +1 -0
  348. package/lib/esm/test/annotations/LeaderGeometry.test.js +256 -0
  349. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -0
  350. package/lib/esm/test/annotations/TextAnnotation.test.js +269 -1047
  351. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  352. package/lib/esm/test/annotations/TextBlock.test.d.ts +2 -0
  353. package/lib/esm/test/annotations/TextBlock.test.d.ts.map +1 -0
  354. package/lib/esm/test/annotations/TextBlock.test.js +1199 -0
  355. package/lib/esm/test/annotations/TextBlock.test.js.map +1 -0
  356. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.d.ts +60 -0
  357. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.d.ts.map +1 -0
  358. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js +69 -0
  359. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/old.config.js.map +1 -0
  360. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts +1442 -0
  361. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.d.ts.map +1 -0
  362. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js +817 -0
  363. package/lib/esm/test/assets/IncrementalSchemaLocater/configs/simple.config.js.map +1 -0
  364. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts +2 -0
  365. package/lib/esm/test/ecdb/ConcurrentQuery.test.d.ts.map +1 -0
  366. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +164 -0
  367. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -0
  368. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js +22 -32
  369. package/lib/esm/test/ecdb/ConcurrentQueryLoad.test.js.map +1 -1
  370. package/lib/esm/test/ecdb/ECDb.test.js +29 -8
  371. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  372. package/lib/esm/test/ecdb/ECSqlQuery.test.js +0 -55
  373. package/lib/esm/test/ecdb/ECSqlQuery.test.js.map +1 -1
  374. package/lib/esm/test/ecdb/ECSqlStatement.test.js +192 -0
  375. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  376. package/lib/esm/test/hubaccess/ApplyChangeset.test.d.ts +2 -0
  377. package/lib/esm/test/hubaccess/ApplyChangeset.test.d.ts.map +1 -0
  378. package/lib/esm/test/hubaccess/ApplyChangeset.test.js +86 -0
  379. package/lib/esm/test/hubaccess/ApplyChangeset.test.js.map +1 -0
  380. package/lib/esm/test/imodel/IModel.test.js +313 -5
  381. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  382. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.d.ts +2 -0
  383. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.d.ts.map +1 -0
  384. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js +343 -0
  385. package/lib/esm/test/incrementalSchemaLocater/ECSqlQueries.test.js.map +1 -0
  386. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.d.ts +2 -0
  387. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.d.ts.map +1 -0
  388. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js +207 -0
  389. package/lib/esm/test/incrementalSchemaLocater/IncrementalLoading.test.js.map +1 -0
  390. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts +11 -0
  391. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.d.ts.map +1 -0
  392. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js +36 -0
  393. package/lib/esm/test/incrementalSchemaLocater/utils/IModelSchemaLocater.js.map +1 -0
  394. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts +17 -0
  395. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.d.ts.map +1 -0
  396. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js +116 -0
  397. package/lib/esm/test/incrementalSchemaLocater/utils/IncrementalTestHelper.js.map +1 -0
  398. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts +9 -0
  399. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.d.ts.map +1 -0
  400. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js +20 -0
  401. package/lib/esm/test/incrementalSchemaLocater/utils/TestSqlSchemaLocater.js.map +1 -0
  402. package/lib/esm/test/misc/GeoServices.test.js +36 -10
  403. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  404. package/lib/esm/test/schema/ClassRegistry.test.js +104 -2
  405. package/lib/esm/test/schema/ClassRegistry.test.js.map +1 -1
  406. package/lib/esm/test/standalone/ChangesetReader.test.js +547 -136
  407. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  408. package/lib/esm/test/standalone/ExportGraphics.test.js +53 -1
  409. package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
  410. package/lib/esm/test/standalone/GeometryStream.test.js +49 -1
  411. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  412. package/lib/esm/test/standalone/IModelLimits.test.d.ts +2 -0
  413. package/lib/esm/test/standalone/IModelLimits.test.d.ts.map +1 -0
  414. package/lib/esm/test/standalone/IModelLimits.test.js +103 -0
  415. package/lib/esm/test/standalone/IModelLimits.test.js.map +1 -0
  416. package/lib/esm/test/standalone/RenderMaterialElement.test.js +24 -1
  417. package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
  418. package/lib/esm/test/standalone/SnapshotDb.test.js +19 -1
  419. package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
  420. package/lib/esm/workspace/Workspace.d.ts +0 -1
  421. package/lib/esm/workspace/Workspace.d.ts.map +1 -1
  422. package/lib/esm/workspace/Workspace.js.map +1 -1
  423. package/package.json +21 -15
  424. package/lib/cjs/TextAnnotationElement.d.ts +0 -54
  425. package/lib/cjs/TextAnnotationElement.d.ts.map +0 -1
  426. package/lib/cjs/TextAnnotationElement.js +0 -94
  427. package/lib/cjs/TextAnnotationElement.js.map +0 -1
  428. package/lib/cjs/TextAnnotationGeometry.d.ts +0 -32
  429. package/lib/cjs/TextAnnotationGeometry.d.ts.map +0 -1
  430. package/lib/cjs/TextAnnotationGeometry.js.map +0 -1
  431. package/lib/cjs/TextAnnotationLayout.d.ts.map +0 -1
  432. package/lib/cjs/TextAnnotationLayout.js.map +0 -1
  433. package/lib/esm/TextAnnotationElement.d.ts +0 -54
  434. package/lib/esm/TextAnnotationElement.d.ts.map +0 -1
  435. package/lib/esm/TextAnnotationElement.js +0 -89
  436. package/lib/esm/TextAnnotationElement.js.map +0 -1
  437. package/lib/esm/TextAnnotationGeometry.d.ts +0 -32
  438. package/lib/esm/TextAnnotationGeometry.d.ts.map +0 -1
  439. package/lib/esm/TextAnnotationGeometry.js.map +0 -1
  440. package/lib/esm/TextAnnotationLayout.d.ts.map +0 -1
  441. package/lib/esm/TextAnnotationLayout.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ECDb.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDb.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, expect } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DbResult, Id64, Id64String, Logger } from \"@itwin/core-bentley\";\nimport { ECDb, ECDbOpenMode, ECSqlInsertResult, ECSqlStatement, ECSqlWriteStatement, IModelJsFs, SqliteStatement, SqliteValue, SqliteValueType } from \"../../core-backend\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\nimport { QueryOptionsBuilder } from \"@itwin/core-common\";\n\ndescribe(\"ECDb\", () => {\n const outDir = KnownTestLocations.outputDir;\n\n it(\"should be able to create a new ECDb\", () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"create.ecdb\");\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"should be able to close an ECDb\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"close.ecdb\");\n assert.isTrue(ecdb.isOpen);\n ecdb.closeDb();\n assert.isFalse(ecdb.isOpen);\n });\n\n it(\"should be able to open an ECDb\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite);\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"Open ECDb with upgrade option\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.FileUpgrade));\n }\n\n });\n it(\"attach/detach newer profile version\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n\n // override profile version to 55.0.0 which is currently not supported\n testECDb.withSqliteStatement(`\n UPDATE be_Prop SET\n StrData = '{\"major\":55,\"minor\":0,\"sub1\":0,\"sub2\":0}'\n WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`,\n (stmt: SqliteStatement) => { stmt.step(); });\n testECDb.saveChanges();\n\n const runDbListPragmaUsingStatement = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n const runDbListPragmaCCQ = async (ecdb: ECDb) => {\n const reader = ecdb.createQueryReader(\"PRAGMA db_list\");\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (await reader.step()) {\n result.push(reader.current.toRow());\n }\n return result;\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n // following call will not fail but unknow ECDb profile will cause it to be attach as SQLite.\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader1.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb1.detachDb(\"source\");\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n });\n it(\"attach/detach file & db_list pragma\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n\n const runDbListPragma = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", (stmt: ECSqlStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"ECDb\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file3.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\", undefined, new QueryOptionsBuilder().setUsePrimaryConnection(true).getOptions());\n assert.equal(await reader1.step(), true);\n assert.equal(reader1.current.name, \"Mary\");\n assert.equal(reader1.current.age, 45);\n testECDb1.detachDb(\"source\");\n\n\n using testECDb2 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb2.attachDb(ecdbPath1, \"source\");\n const reader2 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n assert.equal(await reader2.step(), true);\n assert.equal(reader2.current.name, \"Mary\");\n assert.equal(reader2.current.age, 45);\n testECDb2.detachDb(\"source\");\n const reader3 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader3.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n });\n it(\"should be able to import a schema\", () => {\n const fileName = \"schemaimport.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n let id: Id64String;\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n id = testECDb.withCachedWriteStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlWriteStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withPreparedStatement(\"SELECT Name, Age FROM test.Person WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\n stmt.bindId(1, id);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n });\n\n it(\"should be able to get schema props\", () => {\n const fileName = \"schema-props.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath);\n const schema = ecdb.getSchemaProps(\"ECDbMeta\");\n assert.equal(schema.name, \"ECDbMeta\");\n });\n\n it(\"Run plain SQL\", () => {\n const fileName = \"plainseql.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n\n testECDb.withPreparedSqliteStatement(\"CREATE TABLE Test(Id INTEGER PRIMARY KEY, Name TEXT NOT NULL, Code INTEGER)\", (stmt: SqliteStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValue(1, \"Dummy 1\");\n stmt.bindValue(2, 100);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValues([\"Dummy 2\", 200]);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValue(\":p1\", \"Dummy 3\");\n stmt.bindValue(\":p2\", 300);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValues({ \":p1\": \"Dummy 4\", \":p2\": 400 });\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n ecdb.withPreparedSqliteStatement(\"SELECT Id,Name,Code FROM Test ORDER BY Id\", (stmt: SqliteStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n assert.equal(stmt.getColumnCount(), 3);\n const val0: SqliteValue = stmt.getValue(0);\n assert.equal(val0.columnName, \"Id\");\n assert.equal(val0.type, SqliteValueType.Integer);\n assert.isFalse(val0.isNull);\n assert.equal(val0.getInteger(), i);\n\n const val1: SqliteValue = stmt.getValue(1);\n assert.equal(val1.columnName, \"Name\");\n assert.equal(val1.type, SqliteValueType.String);\n assert.isFalse(val1.isNull);\n assert.equal(val1.getString(), `Dummy ${i}`);\n\n const val2: SqliteValue = stmt.getValue(2);\n assert.equal(val2.columnName, \"Code\");\n assert.equal(val2.type, SqliteValueType.Integer);\n assert.isFalse(val2.isNull);\n assert.equal(val2.getInteger(), i * 100);\n\n const row: any = stmt.getRow();\n assert.equal(row.id, i);\n assert.equal(row.name, `Dummy ${i}`);\n assert.equal(row.code, i * 100);\n }\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n });\n\n it(\"test unit labels in composite formats\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"TestCompositeFormats.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"compositeFormats1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite>\n <Unit>u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit label=\"\">u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const expectedLabels = [undefined, \"m\", \"\", \"mm\"];\n let index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabels[index++]);\n }\n });\n\n const xmlpathUpdated = path.join(outDir, \"compositeFormats2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.1\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite spacer=\"=\" includeZero=\"False\">\n <Unit label=\"\">u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit>u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n\n ecdb.importSchema(xmlpathUpdated);\n ecdb.saveChanges();\n\n const expectedLabelsUpdated = [\"\", \"m\", undefined, \"mm\"];\n index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabelsUpdated[index++]);\n }\n });\n\n ecdb.closeDb();\n });\n\n it(\"should make importSchema fail if new schema changes are observed without version bump\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"importSchemaNoVersionBump.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"importSchemaNoVersionBump1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const xmlpathUpdated = path.join(outDir, \"importSchemaNoVersionBump2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n <ECProperty propertyName=\"Height\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n\n let calledCategory = \"\";\n let calledMessage = \"\";\n const stubbedLogError = sinon.stub(Logger, \"logError\").callsFake((category: string, message: string) => {\n calledCategory = category;\n calledMessage = message;\n });\n\n // although an error should be logged, no error is actually returned to not disrupt currently existing workflows and to alert the user about some wrong/unexpected behavior\n expect(ecdb.importSchema(xmlpathUpdated)).to.not.throw;\n expect(calledCategory).to.equal(\"ECDb\");\n expect(calledMessage).to.equal(\"ECSchema import has failed. Schema Test has new changes, but the schema version is not incremented.\");\n\n stubbedLogError.restore();\n ecdb.closeDb();\n });\n});\n"]}
1
+ {"version":3,"file":"ECDb.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECDb.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, expect } from \"chai\";\nimport * as path from \"path\";\nimport * as sinon from \"sinon\";\nimport { DbResult, Id64, Id64String, Logger, LogLevel } from \"@itwin/core-bentley\";\nimport { ECDb, ECDbOpenMode, ECSqlInsertResult, ECSqlStatement, ECSqlWriteStatement, IModelJsFs, SqliteStatement, SqliteValue, SqliteValueType } from \"../../core-backend\";\nimport { KnownTestLocations } from \"../KnownTestLocations\";\nimport { ECDbTestHelper } from \"./ECDbTestHelper\";\nimport { QueryOptionsBuilder } from \"@itwin/core-common\";\nimport { EntityClass, SchemaContext, SchemaJsonLocater, SchemaKey } from \"@itwin/ecschema-metadata\";\n\ndescribe(\"ECDb\", () => {\n const outDir = KnownTestLocations.outputDir;\n\n it(\"should be able to create a new ECDb\", () => {\n using ecdb = ECDbTestHelper.createECDb(outDir, \"create.ecdb\");\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"should be able to close an ECDb\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"close.ecdb\");\n assert.isTrue(ecdb.isOpen);\n ecdb.closeDb();\n assert.isFalse(ecdb.isOpen);\n });\n\n it(\"should be able to open an ECDb\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite);\n assert.isTrue(ecdb.isOpen);\n });\n\n it(\"Open ECDb with upgrade option\", () => {\n const fileName = \"open.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.ReadWrite));\n }\n {\n using ecdb = new ECDb();\n assert.doesNotThrow(() => ecdb.openDb(ecdbPath, ECDbOpenMode.FileUpgrade));\n }\n\n });\n it(\"attach/detach newer profile version\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n\n // override profile version to 55.0.0 which is currently not supported\n testECDb.withSqliteStatement(`\n UPDATE be_Prop SET\n StrData = '{\"major\":55,\"minor\":0,\"sub1\":0,\"sub2\":0}'\n WHERE Namespace = 'ec_Db' AND Name = 'SchemaVersion'`,\n (stmt: SqliteStatement) => { stmt.step(); });\n testECDb.saveChanges();\n\n const runDbListPragmaUsingStatement = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n const runDbListPragmaCCQ = async (ecdb: ECDb) => {\n const reader = ecdb.createQueryReader(\"PRAGMA db_list\");\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (await reader.step()) {\n result.push(reader.current.toRow());\n }\n return result;\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n // following call will not fail but unknow ECDb profile will cause it to be attach as SQLite.\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragmaUsingStatement(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader1.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"SQLite\"\n }\n ]);\n testECDb1.detachDb(\"source\");\n expect(await runDbListPragmaCCQ(testECDb1)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file4.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n });\n it(\"attach/detach file & db_list pragma\", async () => {\n const fileName1 = \"source_file.ecdb\";\n const ecdbPath1: string = path.join(outDir, fileName1);\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName1,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb.withPreparedStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n\n const runDbListPragma = (ecdb: ECDb) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return ecdb.withPreparedStatement(\"PRAGMA db_list\", (stmt: ECSqlStatement) => {\n const result: { alias: string, filename: string, profile: string }[] = [];\n while (stmt.step() === DbResult.BE_SQLITE_ROW) {\n result.push(stmt.getRow());\n }\n return result;\n });\n }\n using testECDb0 = ECDbTestHelper.createECDb(outDir, \"file2.ecdb\");\n testECDb0.attachDb(ecdbPath1, \"source\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", (stmt: ECSqlStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n {\n sno: 1,\n alias: \"source\",\n fileName: path.join(outDir, \"source_file.ecdb\"),\n profile: \"ECDb\"\n }\n ]);\n testECDb0.detachDb(\"source\");\n expect(runDbListPragma(testECDb0)).deep.equals([\n {\n sno: 0,\n alias: \"main\",\n fileName: path.join(outDir, \"file2.ecdb\"),\n profile: \"ECDb\"\n },\n ]);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n expect(() => testECDb0.withPreparedStatement(\"SELECT Name, Age FROM source.test.Person\", () => { })).to.throw(\"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n\n using testECDb1 = ECDbTestHelper.createECDb(outDir, \"file3.ecdb\");\n testECDb1.attachDb(ecdbPath1, \"source\");\n const reader1 = testECDb1.createQueryReader(\"SELECT Name, Age FROM source.test.Person\", undefined, new QueryOptionsBuilder().setUsePrimaryConnection(true).getOptions());\n assert.equal(await reader1.step(), true);\n assert.equal(reader1.current.name, \"Mary\");\n assert.equal(reader1.current.age, 45);\n testECDb1.detachDb(\"source\");\n\n\n using testECDb2 = ECDbTestHelper.createECDb(outDir, \"file4.ecdb\");\n testECDb2.attachDb(ecdbPath1, \"source\");\n const reader2 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n assert.equal(await reader2.step(), true);\n assert.equal(reader2.current.name, \"Mary\");\n assert.equal(reader2.current.age, 45);\n testECDb2.detachDb(\"source\");\n const reader3 = testECDb2.createQueryReader(\"SELECT Name, Age FROM source.test.Person\");\n let expectThrow = false;\n try {\n await reader3.step();\n } catch (err) {\n if (err instanceof Error) {\n assert.equal(err.message, \"ECClass 'source.test.Person' does not exist or could not be loaded.\");\n expectThrow = true;\n }\n }\n assert.isTrue(expectThrow);\n });\n it(\"should be able to import a schema\", () => {\n const fileName = \"schemaimport.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n let id: Id64String;\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName,\n `<ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.1\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n assert.isTrue(testECDb.isOpen);\n id = testECDb.withCachedWriteStatement(\"INSERT INTO test.Person(Name,Age) VALUES('Mary', 45)\", (stmt: ECSqlWriteStatement) => {\n const res: ECSqlInsertResult = stmt.stepForInsert();\n assert.equal(res.status, DbResult.BE_SQLITE_DONE);\n assert.isDefined(res.id);\n assert.isTrue(Id64.isValidId64(res.id!));\n return res.id!;\n });\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withPreparedStatement(\"SELECT Name, Age FROM test.Person WHERE ECInstanceId=?\", (stmt: ECSqlStatement) => {\n stmt.bindId(1, id);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n const row = stmt.getRow();\n assert.equal(row.name, \"Mary\");\n assert.equal(row.age, 45);\n });\n });\n\n it(\"should be able to get schema props\", () => {\n const fileName = \"schema-props.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n }\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath);\n const schema = ecdb.getSchemaProps(\"ECDbMeta\");\n assert.equal(schema.name, \"ECDbMeta\");\n });\n\n it(\"Run plain SQL\", () => {\n const fileName = \"plainseql.ecdb\";\n const ecdbPath: string = path.join(outDir, fileName);\n {\n using testECDb = ECDbTestHelper.createECDb(outDir, fileName);\n assert.isTrue(testECDb.isOpen);\n\n testECDb.withPreparedSqliteStatement(\"CREATE TABLE Test(Id INTEGER PRIMARY KEY, Name TEXT NOT NULL, Code INTEGER)\", (stmt: SqliteStatement) => {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValue(1, \"Dummy 1\");\n stmt.bindValue(2, 100);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(?,?)\", (stmt: SqliteStatement) => {\n stmt.bindValues([\"Dummy 2\", 200]);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValue(\":p1\", \"Dummy 3\");\n stmt.bindValue(\":p2\", 300);\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.withPreparedSqliteStatement(\"INSERT INTO Test(Name,Code) VALUES(:p1,:p2)\", (stmt: SqliteStatement) => {\n stmt.bindValues({ \":p1\": \"Dummy 4\", \":p2\": 400 });\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n\n testECDb.saveChanges();\n }\n\n using ecdb = new ECDb();\n ecdb.openDb(ecdbPath, ECDbOpenMode.Readonly);\n assert.isTrue(ecdb.isOpen);\n\n ecdb.withPreparedSqliteStatement(\"SELECT Id,Name,Code FROM Test ORDER BY Id\", (stmt: SqliteStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n assert.equal(stmt.getColumnCount(), 3);\n const val0: SqliteValue = stmt.getValue(0);\n assert.equal(val0.columnName, \"Id\");\n assert.equal(val0.type, SqliteValueType.Integer);\n assert.isFalse(val0.isNull);\n assert.equal(val0.getInteger(), i);\n\n const val1: SqliteValue = stmt.getValue(1);\n assert.equal(val1.columnName, \"Name\");\n assert.equal(val1.type, SqliteValueType.String);\n assert.isFalse(val1.isNull);\n assert.equal(val1.getString(), `Dummy ${i}`);\n\n const val2: SqliteValue = stmt.getValue(2);\n assert.equal(val2.columnName, \"Code\");\n assert.equal(val2.type, SqliteValueType.Integer);\n assert.isFalse(val2.isNull);\n assert.equal(val2.getInteger(), i * 100);\n\n const row: any = stmt.getRow();\n assert.equal(row.id, i);\n assert.equal(row.name, `Dummy ${i}`);\n assert.equal(row.code, i * 100);\n }\n assert.equal(stmt.step(), DbResult.BE_SQLITE_DONE);\n });\n });\n\n it(\"test unit labels in composite formats\", () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"TestCompositeFormats.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"compositeFormats1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.0\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite>\n <Unit>u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit label=\"\">u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const expectedLabels = [undefined, \"m\", \"\", \"mm\"];\n let index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabels[index++]);\n }\n });\n\n const xmlpathUpdated = path.join(outDir, \"compositeFormats2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n <ECSchema schemaName=\"TestCompositeFormats\" alias=\"tcf\" version=\"1.0.1\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECSchemaReference name=\"Units\" version=\"01.00.00\" alias=\"u\" />\n <Unit typeName=\"TestUnit\" displayLabel=\"Test Unit\" definition=\"u:M\" numerator=\"1.0\" phenomenon=\"u:LENGTH\" unitSystem=\"u:METRIC\" />\n <Format typeName=\"TestFormat\" displayLabel=\"TestFormat\" roundFactor=\"0.3\" type=\"Fractional\" showSignOption=\"OnlyNegative\" formatTraits=\"TrailZeroes|KeepSingleZero\" precision=\"4\" decimalSeparator=\".\" thousandSeparator=\",\" uomSeparator=\" \">\n <Composite spacer=\"=\" includeZero=\"False\">\n <Unit label=\"\">u:KM</Unit>\n <Unit label=\"m\">TestUnit</Unit>\n <Unit>u:CM</Unit>\n <Unit label=\"mm\">u:MM</Unit>\n </Composite>\n </Format>\n <KindOfQuantity typeName=\"TestKOQ2\" description=\"Test KOQ2\" displayLabel=\"TestKOQ2\" persistenceUnit=\"u:M\" presentationUnits=\"TestFormat\" relativeError=\"10e-3\" />\n </ECSchema>`);\n\n ecdb.importSchema(xmlpathUpdated);\n ecdb.saveChanges();\n\n const expectedLabelsUpdated = [\"\", \"m\", undefined, \"mm\"];\n index = 0;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n ecdb.withStatement(\"select label from meta.FormatCompositeUnitDef where Format.Id=0x1\", (stmt: ECSqlStatement) => {\n for (let i: number = 1; i <= 4; i++) {\n assert.equal(stmt.step(), DbResult.BE_SQLITE_ROW);\n expect(stmt.getRow().label).to.eql(expectedLabelsUpdated[index++]);\n }\n });\n\n ecdb.closeDb();\n });\n\n it(\"should log warning but continue if new schema changes are observed without version bump\", async () => {\n const ecdb: ECDb = ECDbTestHelper.createECDb(outDir, \"importSchemaNoVersionBump.ecdb\");\n const xmlpathOriginal = path.join(outDir, \"importSchemaNoVersionBump1.ecschema.xml\");\n\n IModelJsFs.writeFileSync(xmlpathOriginal, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n ecdb.importSchema(xmlpathOriginal);\n ecdb.saveChanges();\n\n const xmlpathUpdated = path.join(outDir, \"importSchemaNoVersionBump2.ecschema.xml\");\n IModelJsFs.writeFileSync(xmlpathUpdated, `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <ECSchema schemaName=\"Test\" alias=\"test\" version=\"01.00.00\" xmlns=\"http://www.bentley.com/schemas/Bentley.ECXML.3.2\">\n <ECEntityClass typeName=\"Person\" modifier=\"Sealed\">\n <ECProperty propertyName=\"Name\" typeName=\"string\"/>\n <ECProperty propertyName=\"Age\" typeName=\"int\"/>\n <ECProperty propertyName=\"Height\" typeName=\"int\"/>\n </ECEntityClass>\n </ECSchema>`);\n\n let calledCategory = \"\";\n let calledMessage = \"\";\n const stubbedLogWarning = sinon.stub(Logger, \"logWarning\").callsFake((category: string, message: string) => {\n calledCategory = category;\n calledMessage = message;\n });\n const prevLevel = Logger.getLevel(\"ECDb\");\n\n try {\n Logger.setLevel(\"ECDb\", LogLevel.Warning);\n // We do not want this behavior (just logs a warning and proceeds), initially we intended to throw an error\n // We will wait for the next major change to make this a hard error\n expect(ecdb.importSchema(xmlpathUpdated)).to.not.throw;\n expect(calledCategory).to.equal(\"ECDb\");\n expect(calledMessage).to.equal(\"Schema 'Test' has changes but its version was not incremented. Proceeding with import, but this may lead to unexpected behavior.\");\n stubbedLogWarning.restore();\n }\n finally {\n if (prevLevel !== undefined)\n Logger.setLevel(\"ECDb\", prevLevel);\n else\n delete (Logger as any)._categoryFilter.ECDb;\n }\n\n const context = new SchemaContext();\n const locater = new SchemaJsonLocater((name) => ecdb.getSchemaProps(name));\n context.addLocater(locater);\n const schema = await context.getSchema(new SchemaKey(\"Test\", 1, 0, 0));\n assert.isDefined(schema);\n const personClass = await schema!.getItem(\"Person\", EntityClass);\n assert.isDefined(personClass);\n const heightProp = personClass!.getProperty(\"Height\");\n assert.isDefined(heightProp);\n\n ecdb.closeDb();\n });\n});\n"]}
@@ -383,61 +383,6 @@ describe("ECSql Query", () => {
383
383
  assert.isTrue(hasRow, "imodel1.query() must return latest one row");
384
384
  }
385
385
  });
386
- // new new addon build
387
- it("ecsql interrupt check", async () => {
388
- let cancelled = 0;
389
- let successful = 0;
390
- let rowCount = 0;
391
- try {
392
- ConcurrentQuery.shutdown(imodel1[_nativeDb]);
393
- ConcurrentQuery.resetConfig(imodel1[_nativeDb], { allowTestingArgs: true });
394
- const scheduleQuery = async () => {
395
- return new Promise(async (resolve, reject) => {
396
- try {
397
- const options = new QueryOptionsBuilder();
398
- options.setTestingArgs({ interrupt: true });
399
- options.setDelay(1000);
400
- const reader = imodel1.createQueryReader(`
401
- WITH sequence(n) AS (
402
- SELECT 1
403
- UNION ALL
404
- SELECT n + 1 FROM sequence WHERE n < 10000
405
- )
406
- SELECT COUNT(*)
407
- FROM bis.SpatialIndex i, sequence s`, undefined, options.getOptions());
408
- while (await reader.step()) {
409
- rowCount++;
410
- }
411
- successful++;
412
- resolve();
413
- }
414
- catch (err) {
415
- // we expect query to be cancelled
416
- if (err.errorNumber === DbResult.BE_SQLITE_INTERRUPT) {
417
- cancelled++;
418
- resolve();
419
- }
420
- else {
421
- reject(new Error("rejected"));
422
- }
423
- }
424
- });
425
- };
426
- const queries = [];
427
- for (let i = 0; i < 100; i++) {
428
- queries.push(scheduleQuery());
429
- }
430
- await Promise.all(queries);
431
- // We expect at least one query to be cancelled
432
- assert.equal(successful, 100, "success should be 100");
433
- assert.equal(rowCount, 100, "expect 100 rows");
434
- assert.isAtLeast(cancelled, 0, "should not have any cancelled query");
435
- }
436
- finally {
437
- ConcurrentQuery.shutdown(imodel1[_nativeDb]);
438
- ConcurrentQuery.resetConfig(imodel1[_nativeDb]);
439
- }
440
- });
441
386
  it("check prepare logErrors flag", () => {
442
387
  const ecdb = imodel1;
443
388
  // expect log message when statement fails
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlQuery.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 { DbResult, Id64 } from \"@itwin/core-bentley\";\nimport { DbQueryRequest, DbQueryResponse, DbRequestExecutor, DbRequestKind, ECSqlReader, QueryBinder, QueryOptionsBuilder, QueryPropertyMetaData, QueryRowFormat } from \"@itwin/core-common\";\nimport { ConcurrentQuery } from \"../../ConcurrentQuery\";\nimport { _nativeDb, ECSqlStatement, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\nimport * as path from \"path\";\n\n// cspell:ignore mirukuru ibim\n\ndescribe(\"ECSql Query\", () => {\n let imodel1: SnapshotDb;\n let imodel2: SnapshotDb;\n let imodel3: SnapshotDb;\n let imodel4: SnapshotDb;\n let imodel5: SnapshotDb;\n let imodel6: SnapshotDb;\n\n before(async () => {\n\n imodel1 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n imodel2 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\"));\n imodel3 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledStructProperties.bim\"));\n imodel4 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledArrayProperties.bim\"));\n imodel5 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\n imodel6 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test_ec_4003.bim\"));\n });\n\n after(async () => {\n imodel1.close();\n imodel2.close();\n imodel3.close();\n imodel4.close();\n imodel5.close();\n imodel6.close();\n });\n it(\"verify 4.8.x format for ECClassId\", async () => {\n const queries = [\n \"SELECT ECClassId FROM Bis.Element LIMIT 1\",\n \"SELECT ECClassId aClassId FROM Bis.Element LIMIT 1\",\n \"SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\n \"SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n \"SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\n \"SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\n \"WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t\",\n \"SELECT * FROM (SELECT ECClassId FROM Bis.Element LIMIT 1)\",\n \"SELECT * FROM (SELECT ECClassId aClassId, ECClassId FROM Bis.Element LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t)\",\n ];\n assert.equal(queries.length, 18);\n const results = [\n { className: \"BisCore.DrawingCategory\" },\n { aClassId: \"0x4c\" },\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { aRelClassId: \"0xcf\" },\n { aClassId: \"0x4c\" },\n { aClassId: \"0x4c\" },\n { bClassId: \"0x4c\" },\n { className: \"BisCore.DrawingCategory\" },\n { aClassId: \"0x4c\", className: \"BisCore.DrawingCategory\" },\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { aRelClassId: \"0xcf\" },\n { aClassId: \"0x4c\" },\n { aClassId: \"0x4c\" },\n { bClassId: \"0x4c\" },\n ];\n assert.equal(results.length, 18);\n const builder = new QueryOptionsBuilder();\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n let expectedRows = 0;\n for (let i = 0; i < queries.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(queries[i], (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), results[i], `(ECSqlStatement) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n ++expectedRows;\n });\n for await (const row of imodel1.createQueryReader(queries[i], undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), results[i], `(ECSqlReader) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n ++expectedRows;\n }\n }\n assert.equal(expectedRows, 36);\n });\n it(\"verify return values for system properties\", async () => {\n /* eslint-disable @typescript-eslint/naming-convention */\n const testQueries = [\n //\n {\n query: \"SELECT a.ECInstanceId, b.ECInstanceId, a.ECClassId, b.ECClassId FROM BisCore.Element a, BisCore.Element b LIMIT 1\",\n result: {\n id: \"0x19\",\n id_1: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n className_1: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT Parent.Id,Parent.RelECClassId, Parent.Id myParentId, Parent.RelECClassId myParentRelClassId FROM BisCore.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n result: {\n \"myParentId\": \"0x1\",\n \"myParentRelClassId\": \"0xcf\",\n \"parent.id\": \"0x1\",\n \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\",\n },\n },\n {\n query: \"SELECT ECInstanceId, ECClassId FROM Bis.Element LIMIT 1\",\n result: {\n id: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId FROM Bis.Element) LIMIT 1\",\n result: {\n id: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n id: \"0x1\",\n className: \"BisCore.PartitionOriginatesFromRepository\",\n sourceId: \"0x1c\",\n sourceClassName: \"BisCore.PhysicalPartition\",\n targetId: \"0x12\",\n targetClassName: \"BisCore.RepositoryLink\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n id: \"0x1\",\n className: \"BisCore.PartitionOriginatesFromRepository\",\n sourceId: \"0x1c\",\n sourceClassName: \"BisCore.PhysicalPartition\",\n targetId: \"0x12\",\n targetClassName: \"BisCore.RepositoryLink\",\n },\n },\n {\n query: \"SELECT ECInstanceId a, ECClassId b FROM Bis.Element LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b FROM Bis.Element) LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT ECInstanceId A, ECClassId B FROM Bis.Element LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B FROM Bis.Element) LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT Model, Model.Id, Model.RelECClassId from Bis.Element limit 1\",\n result: {\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT Model, Model.Id, Model.RelECClassId from Bis.Element) LIMIT 1\",\n result: {\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n \"id\": \"0x1\",\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\n \"sourceId\": \"0x1c\",\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\n \"targetId\": \"0x12\",\n \"targetClassName\": \"BisCore.RepositoryLink\",\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n \"id\": \"0x1\",\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\n \"sourceId\": \"0x1c\",\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\n \"targetId\": \"0x12\",\n \"targetClassName\": \"BisCore.RepositoryLink\",\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n ];\n /* eslint-enable @typescript-eslint/naming-convention */\n const builder = new QueryOptionsBuilder();\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n builder.setConvertClassIdsToNames(true);\n // With ECDb Profile 4002\n for (const testQuery of testQueries) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n });\n\n let hasRow = false;\n for await (const row of imodel1.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n hasRow = true;\n }\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\n }\n // With ECDb Profile 4003\n for (const testQuery of testQueries) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel6.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n });\n let hasRow = false;\n for await (const row of imodel6.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n hasRow = true;\n }\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\n }\n });\n // new new addon build\n it(\"ecsql interrupt check\", async () => {\n let cancelled = 0;\n let successful = 0;\n let rowCount = 0;\n try {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { allowTestingArgs: true });\n const scheduleQuery = async () => {\n return new Promise<void>(async (resolve, reject) => {\n try {\n const options = new QueryOptionsBuilder();\n options.setTestingArgs({ interrupt: true });\n options.setDelay(1000);\n const reader = imodel1.createQueryReader(`\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`, undefined, options.getOptions());\n while (await reader.step()) {\n rowCount++;\n }\n successful++;\n resolve();\n } catch (err: any) {\n // we expect query to be cancelled\n if (err.errorNumber === DbResult.BE_SQLITE_INTERRUPT) {\n cancelled++;\n resolve();\n } else {\n reject(new Error(\"rejected\"));\n }\n }\n });\n };\n\n const queries = [];\n for (let i = 0; i < 100; i++) {\n queries.push(scheduleQuery());\n }\n\n await Promise.all(queries);\n // We expect at least one query to be cancelled\n assert.equal(successful, 100, \"success should be 100\");\n assert.equal(rowCount, 100, \"expect 100 rows\");\n assert.isAtLeast(cancelled, 0, \"should not have any cancelled query\");\n } finally {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb]);\n }\n });\n it(\"check prepare logErrors flag\", () => {\n const ecdb = imodel1;\n // expect log message when statement fails\n let slm = new SequentialLogMatcher();\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }), \"no such table: def (BE_SQLITE_ERROR)\");\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\n\n // now pass suppress log error which mean we should not get the error\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }, /* logErrors = */ false), \"no such table: def (BE_SQLITE_ERROR)\");\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\n\n // expect log message when statement fails\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }), \"ECClass 'abc.def' does not exist or could not be loaded.\");\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\n\n // now pass suppress log error which mean we should not get the error\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }, /* logErrors = */ false), \"\");\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\n });\n it(\"restart query\", async () => {\n let cancelled = 0;\n let successful = 0;\n let rowCount = 0;\n try {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\n\n const scheduleQuery = async (delay: number) => {\n return new Promise<void>(async (resolve, reject) => {\n try {\n const options = new QueryOptionsBuilder();\n options.setDelay(delay);\n options.setRestartToken(\"tag\");\n const reader = imodel1.createQueryReader(\"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\", undefined, options.getOptions());\n while (await reader.step()) {\n rowCount++;\n }\n successful++;\n resolve();\n } catch (err: any) {\n // we expect query to be cancelled\n if (err.errorNumber === DbResult.BE_SQLITE_INTERRUPT) {\n cancelled++;\n resolve();\n } else {\n reject(new Error(\"rejected\"));\n }\n }\n });\n };\n\n const queries = [];\n queries.push(scheduleQuery(5000));\n queries.push(scheduleQuery(0));\n\n await Promise.all(queries);\n // We expect at least one query to be cancelled\n assert.isAtLeast(cancelled, 1, \"cancelled should be at least 1\");\n assert.isAtLeast(successful, 1, \"successful should be at least 1\");\n assert.isAtLeast(rowCount, 1, \"rowCount should be at least 1\");\n } finally {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb]);\n }\n });\n it(\"concurrent query should retry on timeout\", async () => {\n class MockECSqlReader extends ECSqlReader {\n public constructor(_executor: DbRequestExecutor<DbQueryRequest, DbQueryResponse>, query: string) {\n super(_executor, query);\n }\n public async mockReadRows(queryRequest: DbQueryRequest): Promise<DbQueryResponse> {\n return super.runWithRetry(queryRequest);\n }\n }\n\n // Set time to 1 sec to simulate a timeout scenario\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\n const executor = {\n execute: async (req: DbQueryRequest) => {\n return ConcurrentQuery.executeQueryRequest(imodel1[_nativeDb], req);\n },\n };\n const request: DbQueryRequest = {\n kind: DbRequestKind.ECSql,\n query: \"SELECT * FROM BisCore.element\",\n delay: 5000, // Set delay to a value > timeout\n };\n try {\n await new MockECSqlReader(executor, request.query).mockReadRows(request);\n assert(false); // We expect this scenario to always throw\n } catch (error: any) {\n // Query should give up after max retry count has been reached\n assert(error.message === \"query too long to execute or server is too busy\");\n }\n });\n it(\"concurrent query use primary connection\", async () => {\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { usePrimaryConn: true });\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 46);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 46);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 1000);\n assert.isTrue(reader.stats.totalTime > 0);\n });\n it(\"concurrent query use idset\", async () => {\n const ids: string[] = [];\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids.push(row[0]);\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element WHERE InVirtualSet(?, ECInstanceId)\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 23);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 23);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 100);\n });\n it(\"concurrent query bind idset in IdSet virtual table\", async () => {\n const ids: string[] = [];\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids.push(row[0]);\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 23);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 23);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 100);\n });\n it(\"concurrent query bind single id in IdSet virtual table\", async () => {\n let ids: string = \"\";\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids = row[0]; // getting only the first id\n break;\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n let rows = 0; // backend will fail to bind so no rows will be returned\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 0);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 0);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n });\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\n const ids: string[] = [\"0x1\", \"ABC\", \"YZ\"];\n\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\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\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 1);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 1);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n });\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\n const ids: string[] = [\"ABC\", \"0x1\", \"YZ\"]; // as first value is not an Id so QueryBinder.from will throw error of \"unsupported type\"\n\n try {\n imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n } catch (err: any) {\n assert.equal(err.message, \"unsupported type\");\n }\n });\n it(\"concurrent query get meta data\", async () => {\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\");\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 46);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 46);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 1000);\n });\n it(\"concurrent query access string meta data\", async () => {\n let reader = imodel1.createQueryReader(\"SELECT e.ECClassId FROM bis.Element e\");\n let props: QueryPropertyMetaData[] = await reader.getMetaData();\n assert.equal(props.length, 1);\n assert.equal(props[0].accessString, \"ECClassId\");\n\n reader = imodel1.createQueryReader(\"SELECT Model.Id, e.Model.Id, Model.RelECClassId, e.Model.RelECClassId FROM bis.Element e\");\n props = await reader.getMetaData();\n assert.equal(props.length, 4);\n assert.equal(props[0].accessString, \"Model.Id\");\n assert.equal(props[1].accessString, \"Model.Id\");\n assert.equal(props[2].accessString, \"Model.RelECClassId\");\n assert.equal(props[3].accessString, \"Model.RelECClassId\");\n\n reader = imodel1.createQueryReader(\"SELECT Origin.X, Origin.Y, TypeDefinition FROM bis.GeometricElement2d ge\");\n props = await reader.getMetaData();\n assert.equal(props.length, 3);\n assert.equal(props[0].accessString, \"Origin.X\");\n assert.equal(props[1].accessString, \"Origin.Y\");\n assert.equal(props[2].accessString, \"TypeDefinition\");\n assert.equal(props[2].typeName, \"navigation\");\n\n reader = imodel1.createQueryReader(\"SELECT 1, 1 + 6, * FROM (VALUES(1,2), (2,3))\");\n props = await reader.getMetaData();\n assert.equal(props.length, 4);\n assert.equal(props[0].accessString, \"1\");\n assert.equal(props[0].jsonName, \"1\");\n assert.equal(props[1].accessString, \"1 + 6\");\n assert.equal(props[1].typeName, \"double\");\n assert.equal(props[2].accessString, \"1_1\");\n assert.equal(props[2].jsonName, \"1_1\");\n assert.equal(props[3].accessString, \"2\");\n });\n it(\"concurrent query quota\", async () => {\n let reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { count: 4 } });\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 4);\n reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { offset: 4, count: 4 } });\n rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 4);\n });\n it(\"paging results\", async () => {\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\n const nRowPerPage = nRowCount / nPageSize;\n const nPages = Math.ceil(nRowPerPage);\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\n const pages = new Array(nPages).fill(pageSize);\n if (nRowPerPage) {\n pages[nPages - 1] = nRowOnLastPage;\n }\n return pages;\n };\n\n const pageSize = 5;\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\";\n const dbs = [imodel1, imodel2, imodel3, imodel4, imodel5];\n const pendingRowCount = [];\n for (const db of dbs) {\n for await (const row of db.createQueryReader(`SELECT count(*) FROM (${query})`)) {\n pendingRowCount.push(row[0] as number);\n }\n }\n\n const rowCounts = await Promise.all(pendingRowCount);\n const expected = [46, 62, 7, 7, 28];\n assert.equal(rowCounts.length, expected.length);\n for (let i = 0; i < expected.length; i++) {\n assert.equal(rowCounts[i], expected[i]);\n }\n // verify row per page\n for (const db of dbs) {\n const i = dbs.indexOf(db);\n const rowPerPage = getRowPerPage(pageSize, expected[i]);\n for (let k = 0; k < rowPerPage.length; k++) {\n const rs = await db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames, limit: { count: pageSize, offset: k * pageSize } }).toArray();\n assert.equal(rs.length, rowPerPage[k]);\n }\n }\n\n // verify async iterator\n for (const db of dbs) {\n const resultSet = [];\n for await (const queryRow of db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const row = queryRow.toRow();\n resultSet.push(row);\n assert.isTrue(Reflect.has(row, \"id\"));\n if (Reflect.ownKeys(row).length > 1) {\n assert.isTrue(Reflect.has(row, \"parentId\"));\n const parentId: string = row.parentId as string;\n assert.isTrue(Id64.isValidId64(parentId));\n }\n const id: string = row.id as string;\n assert.isTrue(Id64.isValidId64(id));\n }\n const entry = dbs.indexOf(db);\n assert.equal(rowCounts[entry], resultSet.length);\n }\n });\n});\n"]}
1
+ {"version":3,"file":"ECSqlQuery.test.js","sourceRoot":"","sources":["../../../../src/test/ecdb/ECSqlQuery.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 { DbResult, Id64 } from \"@itwin/core-bentley\";\nimport { DbQueryRequest, DbQueryResponse, DbRequestExecutor, DbRequestKind, ECSqlReader, QueryBinder, QueryOptionsBuilder, QueryPropertyMetaData, QueryRowFormat } from \"@itwin/core-common\";\nimport { ConcurrentQuery } from \"../../ConcurrentQuery\";\nimport { _nativeDb, ECSqlStatement, SnapshotDb } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\nimport { SequentialLogMatcher } from \"../SequentialLogMatcher\";\nimport * as path from \"path\";\n\n// cspell:ignore mirukuru ibim\n\ndescribe(\"ECSql Query\", () => {\n let imodel1: SnapshotDb;\n let imodel2: SnapshotDb;\n let imodel3: SnapshotDb;\n let imodel4: SnapshotDb;\n let imodel5: SnapshotDb;\n let imodel6: SnapshotDb;\n\n before(async () => {\n\n imodel1 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test.bim\"));\n imodel2 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\"));\n imodel3 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledStructProperties.bim\"));\n imodel4 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"GetSetAutoHandledArrayProperties.bim\"));\n imodel5 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"mirukuru.ibim\"));\n imodel6 = SnapshotDb.openFile(IModelTestUtils.resolveAssetFile(\"test_ec_4003.bim\"));\n });\n\n after(async () => {\n imodel1.close();\n imodel2.close();\n imodel3.close();\n imodel4.close();\n imodel5.close();\n imodel6.close();\n });\n it(\"verify 4.8.x format for ECClassId\", async () => {\n const queries = [\n \"SELECT ECClassId FROM Bis.Element LIMIT 1\",\n \"SELECT ECClassId aClassId FROM Bis.Element LIMIT 1\",\n \"SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\n \"SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n \"SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1 \",\n \"SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\n \"WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t\",\n \"WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t\",\n \"SELECT * FROM (SELECT ECClassId FROM Bis.Element LIMIT 1)\",\n \"SELECT * FROM (SELECT ECClassId aClassId, ECClassId FROM Bis.Element LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent.RelECClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent aParent FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (SELECT Parent.RelECClassId aRelClassId FROM Bis.Element WHERE Parent.Id IS NOT NULL LIMIT 1)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId Foo FROM Bis.Element LIMIT 1) SELECT aClassId FROM t)\",\n \"SELECT * FROM (WITH t(aClassId) AS (SELECT ECClassId FROM Bis.Element LIMIT 1) SELECT aClassId bClassId FROM t)\",\n ];\n assert.equal(queries.length, 18);\n const results = [\n { className: \"BisCore.DrawingCategory\" },\n { aClassId: \"0x4c\" },\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { aRelClassId: \"0xcf\" },\n { aClassId: \"0x4c\" },\n { aClassId: \"0x4c\" },\n { bClassId: \"0x4c\" },\n { className: \"BisCore.DrawingCategory\" },\n { aClassId: \"0x4c\", className: \"BisCore.DrawingCategory\" },\n { parent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\" },\n { aParent: { id: \"0x1\", relClassName: \"BisCore.SubjectOwnsPartitionElements\" } },\n { aRelClassId: \"0xcf\" },\n { aClassId: \"0x4c\" },\n { aClassId: \"0x4c\" },\n { bClassId: \"0x4c\" },\n ];\n assert.equal(results.length, 18);\n const builder = new QueryOptionsBuilder();\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n let expectedRows = 0;\n for (let i = 0; i < queries.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(queries[i], (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), results[i], `(ECSqlStatement) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n ++expectedRows;\n });\n for await (const row of imodel1.createQueryReader(queries[i], undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), results[i], `(ECSqlReader) \"${queries[i]}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n ++expectedRows;\n }\n }\n assert.equal(expectedRows, 36);\n });\n it(\"verify return values for system properties\", async () => {\n /* eslint-disable @typescript-eslint/naming-convention */\n const testQueries = [\n //\n {\n query: \"SELECT a.ECInstanceId, b.ECInstanceId, a.ECClassId, b.ECClassId FROM BisCore.Element a, BisCore.Element b LIMIT 1\",\n result: {\n id: \"0x19\",\n id_1: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n className_1: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT Parent.Id,Parent.RelECClassId, Parent.Id myParentId, Parent.RelECClassId myParentRelClassId FROM BisCore.Element WHERE Parent.Id IS NOT NULL LIMIT 1\",\n result: {\n \"myParentId\": \"0x1\",\n \"myParentRelClassId\": \"0xcf\",\n \"parent.id\": \"0x1\",\n \"parent.relClassName\": \"BisCore.SubjectOwnsPartitionElements\",\n },\n },\n {\n query: \"SELECT ECInstanceId, ECClassId FROM Bis.Element LIMIT 1\",\n result: {\n id: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId FROM Bis.Element) LIMIT 1\",\n result: {\n id: \"0x19\",\n className: \"BisCore.DrawingCategory\",\n },\n },\n {\n query: \"SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n id: \"0x1\",\n className: \"BisCore.PartitionOriginatesFromRepository\",\n sourceId: \"0x1c\",\n sourceClassName: \"BisCore.PhysicalPartition\",\n targetId: \"0x12\",\n targetClassName: \"BisCore.RepositoryLink\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId, ECClassId, SourceECInstanceId, SourceECClassId, TargetECInstanceid, TargetECClassId FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n id: \"0x1\",\n className: \"BisCore.PartitionOriginatesFromRepository\",\n sourceId: \"0x1c\",\n sourceClassName: \"BisCore.PhysicalPartition\",\n targetId: \"0x12\",\n targetClassName: \"BisCore.RepositoryLink\",\n },\n },\n {\n query: \"SELECT ECInstanceId a, ECClassId b FROM Bis.Element LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b FROM Bis.Element) LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT ECInstanceId A, ECClassId B FROM Bis.Element LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B FROM Bis.Element) LIMIT 1\",\n result: {\n a: \"0x19\",\n b: \"0x4c\",\n },\n },\n {\n query: \"SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId a, ECClassId b, SourceECInstanceId c, SourceECClassId d, TargetECInstanceid e, TargetECClassId f FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT ECInstanceId A, ECClassId B, SourceECInstanceId C, SourceECClassId D, TargetECInstanceid E, TargetECClassId F FROM Bis.ElementRefersToElements) LIMIT 1\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n },\n },\n {\n query: \"SELECT Model, Model.Id, Model.RelECClassId from Bis.Element limit 1\",\n result: {\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\n query: \"SELECT * FROM (SELECT Model, Model.Id, Model.RelECClassId from Bis.Element) LIMIT 1\",\n result: {\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n \"id\": \"0x1\",\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\n \"sourceId\": \"0x1c\",\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\n \"targetId\": \"0x12\",\n \"targetClassName\": \"BisCore.RepositoryLink\",\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n \"id\": \"0x1\",\n \"className\": \"BisCore.PartitionOriginatesFromRepository\",\n \"sourceId\": \"0x1c\",\n \"sourceClassName\": \"BisCore.PhysicalPartition\",\n \"targetId\": \"0x12\",\n \"targetClassName\": \"BisCore.RepositoryLink\",\n \"model\": {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n \"model.id\": \"0x1\",\n \"model.relClassName\": \"BisCore.ModelContainsElements\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n {\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\",\n result: {\n a: \"0x1\",\n b: \"0xa8\",\n c: \"0x1c\",\n d: \"0xb4\",\n e: \"0x12\",\n f: \"0xa9\",\n g: {\n id: \"0x1\",\n relClassName: \"BisCore.ModelContainsElements\",\n },\n h: \"0x1\",\n i: \"0x40\",\n },\n },\n ];\n /* eslint-enable @typescript-eslint/naming-convention */\n const builder = new QueryOptionsBuilder();\n builder.setRowFormat(QueryRowFormat.UseJsPropertyNames);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n builder.setConvertClassIdsToNames(true);\n // With ECDb Profile 4002\n for (const testQuery of testQueries) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel1.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n });\n\n let hasRow = false;\n for await (const row of imodel1.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n hasRow = true;\n }\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\n }\n // With ECDb Profile 4003\n for (const testQuery of testQueries) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n imodel6.withPreparedStatement(testQuery.query, (stmt: ECSqlStatement) => {\n assert.equal(DbResult.BE_SQLITE_ROW, stmt.step(), \"expected DbResult.BE_SQLITE_ROW\");\n assert.deepEqual(stmt.getRow(), testQuery.result, `(ECSqlStatement) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n });\n let hasRow = false;\n for await (const row of imodel6.createQueryReader(testQuery.query, undefined, builder.getOptions())) {\n assert.deepEqual(row.toRow(), testQuery.result, `(ECSqlReader) \"${testQuery.query}\" does not match expected result (${path.basename(imodel1[_nativeDb].getFilePath())})`);\n hasRow = true;\n }\n assert.isTrue(hasRow, \"imodel1.query() must return latest one row\");\n }\n });\n it(\"check prepare logErrors flag\", () => {\n const ecdb = imodel1;\n // expect log message when statement fails\n let slm = new SequentialLogMatcher();\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }), \"no such table: def (BE_SQLITE_ERROR)\");\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\n\n // now pass suppress log error which mean we should not get the error\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"BeSQLite\").message(\"Error \\\"no such table: def (BE_SQLITE_ERROR)\\\" preparing SQL: SELECT abc FROM def\");\n assert.throw(() => ecdb.withSqliteStatement(\"SELECT abc FROM def\", () => { }, /* logErrors = */ false), \"no such table: def (BE_SQLITE_ERROR)\");\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\n\n // expect log message when statement fails\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }), \"ECClass 'abc.def' does not exist or could not be loaded.\");\n assert.isTrue(slm.finishAndDispose(), \"logMatcher should detect log\");\n\n // now pass suppress log error which mean we should not get the error\n slm = new SequentialLogMatcher();\n slm.append().error().category(\"ECDb\").message(\"ECClass 'abc.def' does not exist or could not be loaded.\");\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n assert.throw(() => ecdb.withPreparedStatement(\"SELECT abc FROM abc.def\", () => { }, /* logErrors = */ false), \"\");\n assert.isFalse(slm.finishAndDispose(), \"logMatcher should not detect log\");\n });\n it(\"restart query\", async () => {\n let cancelled = 0;\n let successful = 0;\n let rowCount = 0;\n try {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\n\n const scheduleQuery = async (delay: number) => {\n return new Promise<void>(async (resolve, reject) => {\n try {\n const options = new QueryOptionsBuilder();\n options.setDelay(delay);\n options.setRestartToken(\"tag\");\n const reader = imodel1.createQueryReader(\"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\", undefined, options.getOptions());\n while (await reader.step()) {\n rowCount++;\n }\n successful++;\n resolve();\n } catch (err: any) {\n // we expect query to be cancelled\n if (err.errorNumber === DbResult.BE_SQLITE_INTERRUPT) {\n cancelled++;\n resolve();\n } else {\n reject(new Error(\"rejected\"));\n }\n }\n });\n };\n\n const queries = [];\n queries.push(scheduleQuery(5000));\n queries.push(scheduleQuery(0));\n\n await Promise.all(queries);\n // We expect at least one query to be cancelled\n assert.isAtLeast(cancelled, 1, \"cancelled should be at least 1\");\n assert.isAtLeast(successful, 1, \"successful should be at least 1\");\n assert.isAtLeast(rowCount, 1, \"rowCount should be at least 1\");\n } finally {\n ConcurrentQuery.shutdown(imodel1[_nativeDb]);\n ConcurrentQuery.resetConfig(imodel1[_nativeDb]);\n }\n });\n it(\"concurrent query should retry on timeout\", async () => {\n class MockECSqlReader extends ECSqlReader {\n public constructor(_executor: DbRequestExecutor<DbQueryRequest, DbQueryResponse>, query: string) {\n super(_executor, query);\n }\n public async mockReadRows(queryRequest: DbQueryRequest): Promise<DbQueryResponse> {\n return super.runWithRetry(queryRequest);\n }\n }\n\n // Set time to 1 sec to simulate a timeout scenario\n ConcurrentQuery.resetConfig(imodel1[_nativeDb], { globalQuota: { time: 1 }, ignoreDelay: false });\n const executor = {\n execute: async (req: DbQueryRequest) => {\n return ConcurrentQuery.executeQueryRequest(imodel1[_nativeDb], req);\n },\n };\n const request: DbQueryRequest = {\n kind: DbRequestKind.ECSql,\n query: \"SELECT * FROM BisCore.element\",\n delay: 5000, // Set delay to a value > timeout\n };\n try {\n await new MockECSqlReader(executor, request.query).mockReadRows(request);\n assert(false); // We expect this scenario to always throw\n } catch (error: any) {\n // Query should give up after max retry count has been reached\n assert(error.message === \"query too long to execute or server is too busy\");\n }\n });\n it(\"concurrent query use primary connection\", async () => {\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { usePrimaryConn: true });\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 46);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 46);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 1000);\n assert.isTrue(reader.stats.totalTime > 0);\n });\n it(\"concurrent query use idset\", async () => {\n const ids: string[] = [];\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids.push(row[0]);\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element WHERE InVirtualSet(?, ECInstanceId)\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 23);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 23);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 100);\n });\n it(\"concurrent query bind idset in IdSet virtual table\", async () => {\n const ids: string[] = [];\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids.push(row[0]);\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 23);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 23);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 100);\n });\n it(\"concurrent query bind single id in IdSet virtual table\", async () => {\n let ids: string = \"\";\n for await (const row of imodel1.createQueryReader(\"SELECT ECInstanceId FROM BisCore.Element LIMIT 23\")) {\n ids = row[0]; // getting only the first id\n break;\n }\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n let rows = 0; // backend will fail to bind so no rows will be returned\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 0);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 0);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n });\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\n const ids: string[] = [\"0x1\", \"ABC\", \"YZ\"];\n\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n let props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\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\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 1);\n props = await reader.getMetaData();\n assert.equal(props.length, 12); // 11 for BisCore.element and 1 for IdSet\n assert.equal(reader.stats.backendRowsReturned, 1);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n });\n it(\"concurrent query bind idset with invalid values in IdSet virtual table\", async () => {\n const ids: string[] = [\"ABC\", \"0x1\", \"YZ\"]; // as first value is not an Id so QueryBinder.from will throw error of \"unsupported type\"\n\n try {\n imodel1.createQueryReader(\"SELECT * FROM BisCore.element, IdSet(?) WHERE id = ECInstanceId ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\", QueryBinder.from([ids]));\n } catch (err: any) {\n assert.equal(err.message, \"unsupported type\");\n }\n });\n it(\"concurrent query get meta data\", async () => {\n const reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\");\n let props = await reader.getMetaData();\n assert.equal(props.length, 11);\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 46);\n props = await reader.getMetaData();\n assert.equal(props.length, 11);\n assert.equal(reader.stats.backendRowsReturned, 46);\n assert.isTrue(reader.stats.backendCpuTime > 0);\n assert.isTrue(reader.stats.backendMemUsed > 1000);\n });\n it(\"concurrent query access string meta data\", async () => {\n let reader = imodel1.createQueryReader(\"SELECT e.ECClassId FROM bis.Element e\");\n let props: QueryPropertyMetaData[] = await reader.getMetaData();\n assert.equal(props.length, 1);\n assert.equal(props[0].accessString, \"ECClassId\");\n\n reader = imodel1.createQueryReader(\"SELECT Model.Id, e.Model.Id, Model.RelECClassId, e.Model.RelECClassId FROM bis.Element e\");\n props = await reader.getMetaData();\n assert.equal(props.length, 4);\n assert.equal(props[0].accessString, \"Model.Id\");\n assert.equal(props[1].accessString, \"Model.Id\");\n assert.equal(props[2].accessString, \"Model.RelECClassId\");\n assert.equal(props[3].accessString, \"Model.RelECClassId\");\n\n reader = imodel1.createQueryReader(\"SELECT Origin.X, Origin.Y, TypeDefinition FROM bis.GeometricElement2d ge\");\n props = await reader.getMetaData();\n assert.equal(props.length, 3);\n assert.equal(props[0].accessString, \"Origin.X\");\n assert.equal(props[1].accessString, \"Origin.Y\");\n assert.equal(props[2].accessString, \"TypeDefinition\");\n assert.equal(props[2].typeName, \"navigation\");\n\n reader = imodel1.createQueryReader(\"SELECT 1, 1 + 6, * FROM (VALUES(1,2), (2,3))\");\n props = await reader.getMetaData();\n assert.equal(props.length, 4);\n assert.equal(props[0].accessString, \"1\");\n assert.equal(props[0].jsonName, \"1\");\n assert.equal(props[1].accessString, \"1 + 6\");\n assert.equal(props[1].typeName, \"double\");\n assert.equal(props[2].accessString, \"1_1\");\n assert.equal(props[2].jsonName, \"1_1\");\n assert.equal(props[3].accessString, \"2\");\n });\n it(\"concurrent query quota\", async () => {\n let reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { count: 4 } });\n let rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 4);\n reader = imodel1.createQueryReader(\"SELECT * FROM BisCore.element\", undefined, { limit: { offset: 4, count: 4 } });\n rows = 0;\n while (await reader.step()) {\n rows++;\n }\n assert.equal(rows, 4);\n });\n it(\"paging results\", async () => {\n const getRowPerPage = (nPageSize: number, nRowCount: number) => {\n const nRowPerPage = nRowCount / nPageSize;\n const nPages = Math.ceil(nRowPerPage);\n const nRowOnLastPage = nRowCount - (Math.floor(nRowPerPage) * pageSize);\n const pages = new Array(nPages).fill(pageSize);\n if (nRowPerPage) {\n pages[nPages - 1] = nRowOnLastPage;\n }\n return pages;\n };\n\n const pageSize = 5;\n const query = \"SELECT ECInstanceId as Id, Parent.Id as ParentId FROM BisCore.element\";\n const dbs = [imodel1, imodel2, imodel3, imodel4, imodel5];\n const pendingRowCount = [];\n for (const db of dbs) {\n for await (const row of db.createQueryReader(`SELECT count(*) FROM (${query})`)) {\n pendingRowCount.push(row[0] as number);\n }\n }\n\n const rowCounts = await Promise.all(pendingRowCount);\n const expected = [46, 62, 7, 7, 28];\n assert.equal(rowCounts.length, expected.length);\n for (let i = 0; i < expected.length; i++) {\n assert.equal(rowCounts[i], expected[i]);\n }\n // verify row per page\n for (const db of dbs) {\n const i = dbs.indexOf(db);\n const rowPerPage = getRowPerPage(pageSize, expected[i]);\n for (let k = 0; k < rowPerPage.length; k++) {\n const rs = await db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames, limit: { count: pageSize, offset: k * pageSize } }).toArray();\n assert.equal(rs.length, rowPerPage[k]);\n }\n }\n\n // verify async iterator\n for (const db of dbs) {\n const resultSet = [];\n for await (const queryRow of db.createQueryReader(query, undefined, { rowFormat: QueryRowFormat.UseJsPropertyNames })) {\n const row = queryRow.toRow();\n resultSet.push(row);\n assert.isTrue(Reflect.has(row, \"id\"));\n if (Reflect.ownKeys(row).length > 1) {\n assert.isTrue(Reflect.has(row, \"parentId\"));\n const parentId: string = row.parentId as string;\n assert.isTrue(Id64.isValidId64(parentId));\n }\n const id: string = row.id as string;\n assert.isTrue(Id64.isValidId64(id));\n }\n const entry = dbs.indexOf(db);\n assert.equal(rowCounts[entry], resultSet.length);\n }\n });\n});\n"]}