nemo-py 0.1.1__tar.gz

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 (336) hide show
  1. nemo_py-0.1.1/.github/workflows/release.yml +157 -0
  2. nemo_py-0.1.1/.gitignore +104 -0
  3. nemo_py-0.1.1/CMakeLists.txt +52 -0
  4. nemo_py-0.1.1/CMakePresets.json +54 -0
  5. nemo_py-0.1.1/HOW_IT_WORKS.md +467 -0
  6. nemo_py-0.1.1/LICENSE +201 -0
  7. nemo_py-0.1.1/PKG-INFO +524 -0
  8. nemo_py-0.1.1/README.md +297 -0
  9. nemo_py-0.1.1/benchmarks/README.md +87 -0
  10. nemo_py-0.1.1/benchmarks/benchmark_suite.py +34 -0
  11. nemo_py-0.1.1/ci/fuzz_runner.py +26 -0
  12. nemo_py-0.1.1/ci/run_sanitizers.sh +11 -0
  13. nemo_py-0.1.1/cmake/NemoOptions.cmake +42 -0
  14. nemo_py-0.1.1/docs/asyncconnector.md +235 -0
  15. nemo_py-0.1.1/docs/connect.md +184 -0
  16. nemo_py-0.1.1/docs/datatypes.md +83 -0
  17. nemo_py-0.1.1/docs/logging.md +142 -0
  18. nemo_py-0.1.1/docs/nemo_functions.md +395 -0
  19. nemo_py-0.1.1/docs/sql.md +316 -0
  20. nemo_py-0.1.1/docs/sql_functions.md +269 -0
  21. nemo_py-0.1.1/docs/sql_parameters.md +254 -0
  22. nemo_py-0.1.1/docs/syncconnector.md +280 -0
  23. nemo_py-0.1.1/docs/transactions.md +192 -0
  24. nemo_py-0.1.1/example/README.md +106 -0
  25. nemo_py-0.1.1/example/example_1.py +117 -0
  26. nemo_py-0.1.1/example/example_10.py +119 -0
  27. nemo_py-0.1.1/example/example_11.py +78 -0
  28. nemo_py-0.1.1/example/example_12.py +57 -0
  29. nemo_py-0.1.1/example/example_13.py +55 -0
  30. nemo_py-0.1.1/example/example_14.py +55 -0
  31. nemo_py-0.1.1/example/example_15.py +63 -0
  32. nemo_py-0.1.1/example/example_16.py +58 -0
  33. nemo_py-0.1.1/example/example_17.py +57 -0
  34. nemo_py-0.1.1/example/example_18.py +59 -0
  35. nemo_py-0.1.1/example/example_19.py +59 -0
  36. nemo_py-0.1.1/example/example_2.py +115 -0
  37. nemo_py-0.1.1/example/example_20.py +57 -0
  38. nemo_py-0.1.1/example/example_21.py +60 -0
  39. nemo_py-0.1.1/example/example_22.py +53 -0
  40. nemo_py-0.1.1/example/example_23.py +62 -0
  41. nemo_py-0.1.1/example/example_24.py +52 -0
  42. nemo_py-0.1.1/example/example_25.py +52 -0
  43. nemo_py-0.1.1/example/example_26.py +53 -0
  44. nemo_py-0.1.1/example/example_27.py +78 -0
  45. nemo_py-0.1.1/example/example_28.py +57 -0
  46. nemo_py-0.1.1/example/example_29.py +65 -0
  47. nemo_py-0.1.1/example/example_3.py +125 -0
  48. nemo_py-0.1.1/example/example_30.py +52 -0
  49. nemo_py-0.1.1/example/example_31.py +65 -0
  50. nemo_py-0.1.1/example/example_32.py +58 -0
  51. nemo_py-0.1.1/example/example_33.py +56 -0
  52. nemo_py-0.1.1/example/example_34.py +62 -0
  53. nemo_py-0.1.1/example/example_35.py +52 -0
  54. nemo_py-0.1.1/example/example_36.py +56 -0
  55. nemo_py-0.1.1/example/example_37.py +60 -0
  56. nemo_py-0.1.1/example/example_38.py +67 -0
  57. nemo_py-0.1.1/example/example_39.py +66 -0
  58. nemo_py-0.1.1/example/example_4.py +146 -0
  59. nemo_py-0.1.1/example/example_40.py +114 -0
  60. nemo_py-0.1.1/example/example_41.py +91 -0
  61. nemo_py-0.1.1/example/example_42.py +82 -0
  62. nemo_py-0.1.1/example/example_43.py +83 -0
  63. nemo_py-0.1.1/example/example_44.py +86 -0
  64. nemo_py-0.1.1/example/example_45.py +81 -0
  65. nemo_py-0.1.1/example/example_46.py +99 -0
  66. nemo_py-0.1.1/example/example_47.py +87 -0
  67. nemo_py-0.1.1/example/example_48.py +98 -0
  68. nemo_py-0.1.1/example/example_49.py +79 -0
  69. nemo_py-0.1.1/example/example_5.py +133 -0
  70. nemo_py-0.1.1/example/example_50.py +162 -0
  71. nemo_py-0.1.1/example/example_6.py +119 -0
  72. nemo_py-0.1.1/example/example_7.py +117 -0
  73. nemo_py-0.1.1/example/example_8.py +100 -0
  74. nemo_py-0.1.1/example/example_9.py +107 -0
  75. nemo_py-0.1.1/examples/CMakeLists.txt +4 -0
  76. nemo_py-0.1.1/examples/basic.cpp +18 -0
  77. nemo_py-0.1.1/include/nemo/api/connection.hpp +72 -0
  78. nemo_py-0.1.1/include/nemo/api/database.hpp +83 -0
  79. nemo_py-0.1.1/include/nemo/api/prepared_statement.hpp +40 -0
  80. nemo_py-0.1.1/include/nemo/api/result.hpp +64 -0
  81. nemo_py-0.1.1/include/nemo/api/row.hpp +37 -0
  82. nemo_py-0.1.1/include/nemo/api/transaction.hpp +41 -0
  83. nemo_py-0.1.1/include/nemo/catalog/catalog.hpp +86 -0
  84. nemo_py-0.1.1/include/nemo/catalog/catalog_id.hpp +17 -0
  85. nemo_py-0.1.1/include/nemo/catalog/catalog_iterator.hpp +9 -0
  86. nemo_py-0.1.1/include/nemo/catalog/catalog_serializer.hpp +32 -0
  87. nemo_py-0.1.1/include/nemo/catalog/check_constraint.hpp +22 -0
  88. nemo_py-0.1.1/include/nemo/catalog/column.hpp +47 -0
  89. nemo_py-0.1.1/include/nemo/catalog/constraint.hpp +35 -0
  90. nemo_py-0.1.1/include/nemo/catalog/default_value.hpp +24 -0
  91. nemo_py-0.1.1/include/nemo/catalog/foreign_key.hpp +47 -0
  92. nemo_py-0.1.1/include/nemo/catalog/index_metadata.hpp +34 -0
  93. nemo_py-0.1.1/include/nemo/catalog/primary_key.hpp +26 -0
  94. nemo_py-0.1.1/include/nemo/catalog/schema.hpp +16 -0
  95. nemo_py-0.1.1/include/nemo/catalog/table_metadata.hpp +25 -0
  96. nemo_py-0.1.1/include/nemo/catalog/table_schema.hpp +41 -0
  97. nemo_py-0.1.1/include/nemo/catalog/unique_constraint.hpp +26 -0
  98. nemo_py-0.1.1/include/nemo/concurrency/lock_handle.hpp +59 -0
  99. nemo_py-0.1.1/include/nemo/concurrency/lock_manager.hpp +65 -0
  100. nemo_py-0.1.1/include/nemo/concurrency/lock_mode.hpp +38 -0
  101. nemo_py-0.1.1/include/nemo/concurrency/lock_resource.hpp +70 -0
  102. nemo_py-0.1.1/include/nemo/concurrency/page_latch.hpp +50 -0
  103. nemo_py-0.1.1/include/nemo/concurrency/wait_for_graph.hpp +38 -0
  104. nemo_py-0.1.1/include/nemo/core/config.hpp +29 -0
  105. nemo_py-0.1.1/include/nemo/core/constants.hpp +16 -0
  106. nemo_py-0.1.1/include/nemo/core/error.hpp +25 -0
  107. nemo_py-0.1.1/include/nemo/core/ids.hpp +60 -0
  108. nemo_py-0.1.1/include/nemo/core/result.hpp +104 -0
  109. nemo_py-0.1.1/include/nemo/core/status.hpp +29 -0
  110. nemo_py-0.1.1/include/nemo/core/types.hpp +28 -0
  111. nemo_py-0.1.1/include/nemo/core/version.hpp +20 -0
  112. nemo_py-0.1.1/include/nemo/execution/binder/binder.hpp +49 -0
  113. nemo_py-0.1.1/include/nemo/execution/binder/bound_expression.hpp +123 -0
  114. nemo_py-0.1.1/include/nemo/execution/binder/bound_statement.hpp +109 -0
  115. nemo_py-0.1.1/include/nemo/execution/binder/name_resolver.hpp +38 -0
  116. nemo_py-0.1.1/include/nemo/execution/planner/logical_operator.hpp +102 -0
  117. nemo_py-0.1.1/include/nemo/execution/planner/planner.hpp +24 -0
  118. nemo_py-0.1.1/include/nemo/index/bplus_tree.hpp +66 -0
  119. nemo_py-0.1.1/include/nemo/index/bplus_tree_internal.hpp +40 -0
  120. nemo_py-0.1.1/include/nemo/index/bplus_tree_iterator.hpp +46 -0
  121. nemo_py-0.1.1/include/nemo/index/bplus_tree_leaf.hpp +44 -0
  122. nemo_py-0.1.1/include/nemo/index/bplus_tree_node.hpp +65 -0
  123. nemo_py-0.1.1/include/nemo/index/bplus_tree_page.hpp +40 -0
  124. nemo_py-0.1.1/include/nemo/index/index_comparator.hpp +22 -0
  125. nemo_py-0.1.1/include/nemo/index/index_entry.hpp +24 -0
  126. nemo_py-0.1.1/include/nemo/index/index_key.hpp +41 -0
  127. nemo_py-0.1.1/include/nemo/index/index_metadata.hpp +22 -0
  128. nemo_py-0.1.1/include/nemo/index/index_stats.hpp +22 -0
  129. nemo_py-0.1.1/include/nemo/logging/logger.hpp +89 -0
  130. nemo_py-0.1.1/include/nemo/nemo.hpp +17 -0
  131. nemo_py-0.1.1/include/nemo/runtime/cancellation.hpp +46 -0
  132. nemo_py-0.1.1/include/nemo/runtime/connection.hpp +52 -0
  133. nemo_py-0.1.1/include/nemo/runtime/connection_lease.hpp +35 -0
  134. nemo_py-0.1.1/include/nemo/runtime/connection_manager.hpp +40 -0
  135. nemo_py-0.1.1/include/nemo/runtime/connection_pool.hpp +40 -0
  136. nemo_py-0.1.1/include/nemo/runtime/memory_resource.hpp +63 -0
  137. nemo_py-0.1.1/include/nemo/runtime/query_registry.hpp +52 -0
  138. nemo_py-0.1.1/include/nemo/runtime/resource_pool.hpp +64 -0
  139. nemo_py-0.1.1/include/nemo/runtime/runtime_metrics.hpp +30 -0
  140. nemo_py-0.1.1/include/nemo/runtime/session.hpp +50 -0
  141. nemo_py-0.1.1/include/nemo/runtime/shutdown.hpp +37 -0
  142. nemo_py-0.1.1/include/nemo/runtime/task.hpp +41 -0
  143. nemo_py-0.1.1/include/nemo/runtime/worker.hpp +50 -0
  144. nemo_py-0.1.1/include/nemo/runtime/worker_pool.hpp +57 -0
  145. nemo_py-0.1.1/include/nemo/sql/ast/ast_formatter.hpp +34 -0
  146. nemo_py-0.1.1/include/nemo/sql/ast/ast_node.hpp +21 -0
  147. nemo_py-0.1.1/include/nemo/sql/ast/ast_visitor.hpp +34 -0
  148. nemo_py-0.1.1/include/nemo/sql/ast/data_definition.hpp +29 -0
  149. nemo_py-0.1.1/include/nemo/sql/ast/expression.hpp +21 -0
  150. nemo_py-0.1.1/include/nemo/sql/ast/expressions.hpp +78 -0
  151. nemo_py-0.1.1/include/nemo/sql/ast/insert.hpp +34 -0
  152. nemo_py-0.1.1/include/nemo/sql/ast/literals.hpp +21 -0
  153. nemo_py-0.1.1/include/nemo/sql/ast/select.hpp +47 -0
  154. nemo_py-0.1.1/include/nemo/sql/ast/statement.hpp +20 -0
  155. nemo_py-0.1.1/include/nemo/sql/lexer.hpp +42 -0
  156. nemo_py-0.1.1/include/nemo/sql/parser.hpp +57 -0
  157. nemo_py-0.1.1/include/nemo/sql/source_location.hpp +19 -0
  158. nemo_py-0.1.1/include/nemo/sql/sql_error.hpp +17 -0
  159. nemo_py-0.1.1/include/nemo/sql/token.hpp +22 -0
  160. nemo_py-0.1.1/include/nemo/sql/token_type.hpp +54 -0
  161. nemo_py-0.1.1/include/nemo/storage/buffer_frame.hpp +69 -0
  162. nemo_py-0.1.1/include/nemo/storage/buffer_pool.hpp +86 -0
  163. nemo_py-0.1.1/include/nemo/storage/checksum.hpp +16 -0
  164. nemo_py-0.1.1/include/nemo/storage/clock_replacer.hpp +36 -0
  165. nemo_py-0.1.1/include/nemo/storage/database_header.hpp +34 -0
  166. nemo_py-0.1.1/include/nemo/storage/disk_manager.hpp +66 -0
  167. nemo_py-0.1.1/include/nemo/storage/file_manager.hpp +41 -0
  168. nemo_py-0.1.1/include/nemo/storage/free_page_manager.hpp +47 -0
  169. nemo_py-0.1.1/include/nemo/storage/page.hpp +58 -0
  170. nemo_py-0.1.1/include/nemo/storage/page_handle.hpp +52 -0
  171. nemo_py-0.1.1/include/nemo/storage/page_header.hpp +41 -0
  172. nemo_py-0.1.1/include/nemo/storage/record.hpp +42 -0
  173. nemo_py-0.1.1/include/nemo/storage/record_deserializer.hpp +19 -0
  174. nemo_py-0.1.1/include/nemo/storage/record_header.hpp +46 -0
  175. nemo_py-0.1.1/include/nemo/storage/record_id.hpp +44 -0
  176. nemo_py-0.1.1/include/nemo/storage/record_serializer.hpp +19 -0
  177. nemo_py-0.1.1/include/nemo/storage/record_view.hpp +47 -0
  178. nemo_py-0.1.1/include/nemo/storage/replacer.hpp +29 -0
  179. nemo_py-0.1.1/include/nemo/storage/serialization.hpp +63 -0
  180. nemo_py-0.1.1/include/nemo/storage/slot.hpp +29 -0
  181. nemo_py-0.1.1/include/nemo/storage/slot_directory.hpp +33 -0
  182. nemo_py-0.1.1/include/nemo/storage/storage_constants.hpp +18 -0
  183. nemo_py-0.1.1/include/nemo/storage/table_heap.hpp +50 -0
  184. nemo_py-0.1.1/include/nemo/storage/table_page.hpp +69 -0
  185. nemo_py-0.1.1/include/nemo/storage/tuple_layout.hpp +41 -0
  186. nemo_py-0.1.1/include/nemo/transaction/mvcc_header.hpp +20 -0
  187. nemo_py-0.1.1/include/nemo/transaction/snapshot.hpp +32 -0
  188. nemo_py-0.1.1/include/nemo/transaction/transaction.hpp +53 -0
  189. nemo_py-0.1.1/include/nemo/transaction/transaction_context.hpp +31 -0
  190. nemo_py-0.1.1/include/nemo/transaction/transaction_id.hpp +16 -0
  191. nemo_py-0.1.1/include/nemo/transaction/transaction_manager.hpp +56 -0
  192. nemo_py-0.1.1/include/nemo/transaction/transaction_registry.hpp +43 -0
  193. nemo_py-0.1.1/include/nemo/transaction/transaction_state.hpp +35 -0
  194. nemo_py-0.1.1/include/nemo/transaction/undo_record.hpp +27 -0
  195. nemo_py-0.1.1/include/nemo/transaction/visibility.hpp +24 -0
  196. nemo_py-0.1.1/include/nemo/types/array.hpp +54 -0
  197. nemo_py-0.1.1/include/nemo/types/decimal.hpp +53 -0
  198. nemo_py-0.1.1/include/nemo/types/dict.hpp +48 -0
  199. nemo_py-0.1.1/include/nemo/types/json.hpp +87 -0
  200. nemo_py-0.1.1/include/nemo/types/temporal.hpp +108 -0
  201. nemo_py-0.1.1/include/nemo/types/type_cast.hpp +18 -0
  202. nemo_py-0.1.1/include/nemo/types/type_comparator.hpp +25 -0
  203. nemo_py-0.1.1/include/nemo/types/type_hasher.hpp +17 -0
  204. nemo_py-0.1.1/include/nemo/types/type_id.hpp +57 -0
  205. nemo_py-0.1.1/include/nemo/types/type_info.hpp +29 -0
  206. nemo_py-0.1.1/include/nemo/types/type_registry.hpp +22 -0
  207. nemo_py-0.1.1/include/nemo/types/type_serializer.hpp +22 -0
  208. nemo_py-0.1.1/include/nemo/types/uuid.hpp +46 -0
  209. nemo_py-0.1.1/include/nemo/types/value.hpp +122 -0
  210. nemo_py-0.1.1/include/nemo/types/value_view.hpp +40 -0
  211. nemo_py-0.1.1/include/nemo/wal/checkpoint_manager.hpp +38 -0
  212. nemo_py-0.1.1/include/nemo/wal/dirty_page_table.hpp +50 -0
  213. nemo_py-0.1.1/include/nemo/wal/log_buffer.hpp +61 -0
  214. nemo_py-0.1.1/include/nemo/wal/log_reader.hpp +44 -0
  215. nemo_py-0.1.1/include/nemo/wal/log_record.hpp +70 -0
  216. nemo_py-0.1.1/include/nemo/wal/log_record_type.hpp +36 -0
  217. nemo_py-0.1.1/include/nemo/wal/lsn.hpp +34 -0
  218. nemo_py-0.1.1/include/nemo/wal/recovery_manager.hpp +46 -0
  219. nemo_py-0.1.1/include/nemo/wal/recovery_state.hpp +18 -0
  220. nemo_py-0.1.1/include/nemo/wal/transaction_table.hpp +58 -0
  221. nemo_py-0.1.1/include/nemo/wal/wal_error.hpp +26 -0
  222. nemo_py-0.1.1/include/nemo/wal/wal_manager.hpp +68 -0
  223. nemo_py-0.1.1/include/nemo/wal/wal_segment.hpp +65 -0
  224. nemo_py-0.1.1/pyproject.toml +43 -0
  225. nemo_py-0.1.1/python/LICENSE +201 -0
  226. nemo_py-0.1.1/python/src/nemo/__init__.py +42 -0
  227. nemo_py-0.1.1/python/src/nemo/asyncconnector.py +290 -0
  228. nemo_py-0.1.1/python/src/nemo/database.py +123 -0
  229. nemo_py-0.1.1/python/src/nemo/errors.py +31 -0
  230. nemo_py-0.1.1/python/src/nemo/logging.py +177 -0
  231. nemo_py-0.1.1/python/src/nemo/syncconnector.py +250 -0
  232. nemo_py-0.1.1/src/CMakeLists.txt +109 -0
  233. nemo_py-0.1.1/src/api/api_internal.hpp +477 -0
  234. nemo_py-0.1.1/src/api/connection.cpp +497 -0
  235. nemo_py-0.1.1/src/api/database.cpp +112 -0
  236. nemo_py-0.1.1/src/api/function_registry.hpp +1405 -0
  237. nemo_py-0.1.1/src/api/prepared_statement.cpp +43 -0
  238. nemo_py-0.1.1/src/api/query_engine.hpp +1479 -0
  239. nemo_py-0.1.1/src/api/result.cpp +50 -0
  240. nemo_py-0.1.1/src/api/row.cpp +27 -0
  241. nemo_py-0.1.1/src/api/transaction.cpp +56 -0
  242. nemo_py-0.1.1/src/catalog/catalog.cpp +281 -0
  243. nemo_py-0.1.1/src/catalog/catalog_serializer.cpp +62 -0
  244. nemo_py-0.1.1/src/catalog/column.cpp +8 -0
  245. nemo_py-0.1.1/src/catalog/constraint.cpp +8 -0
  246. nemo_py-0.1.1/src/catalog/default_value.cpp +16 -0
  247. nemo_py-0.1.1/src/catalog/index_metadata.cpp +3 -0
  248. nemo_py-0.1.1/src/catalog/schema.cpp +3 -0
  249. nemo_py-0.1.1/src/catalog/table_metadata.cpp +3 -0
  250. nemo_py-0.1.1/src/catalog/table_schema.cpp +64 -0
  251. nemo_py-0.1.1/src/concurrency/lock_manager.cpp +170 -0
  252. nemo_py-0.1.1/src/concurrency/wait_for_graph.cpp +93 -0
  253. nemo_py-0.1.1/src/core/config.cpp +13 -0
  254. nemo_py-0.1.1/src/core/error.cpp +3 -0
  255. nemo_py-0.1.1/src/core/status.cpp +23 -0
  256. nemo_py-0.1.1/src/core/version.cpp +13 -0
  257. nemo_py-0.1.1/src/execution/binder/binder.cpp +166 -0
  258. nemo_py-0.1.1/src/execution/planner/planner.cpp +57 -0
  259. nemo_py-0.1.1/src/index/bplus_tree.cpp +268 -0
  260. nemo_py-0.1.1/src/index/bplus_tree_internal.cpp +172 -0
  261. nemo_py-0.1.1/src/index/bplus_tree_iterator.cpp +127 -0
  262. nemo_py-0.1.1/src/index/bplus_tree_leaf.cpp +193 -0
  263. nemo_py-0.1.1/src/index/bplus_tree_node.cpp +118 -0
  264. nemo_py-0.1.1/src/index/bplus_tree_page.cpp +3 -0
  265. nemo_py-0.1.1/src/index/index_comparator.cpp +39 -0
  266. nemo_py-0.1.1/src/index/index_entry.cpp +3 -0
  267. nemo_py-0.1.1/src/index/index_key.cpp +107 -0
  268. nemo_py-0.1.1/src/index/index_metadata.cpp +3 -0
  269. nemo_py-0.1.1/src/index/index_stats.cpp +3 -0
  270. nemo_py-0.1.1/src/logging/logger.cpp +45 -0
  271. nemo_py-0.1.1/src/python/module.cpp +681 -0
  272. nemo_py-0.1.1/src/runtime/connection_manager.cpp +53 -0
  273. nemo_py-0.1.1/src/runtime/connection_pool.cpp +67 -0
  274. nemo_py-0.1.1/src/runtime/query_registry.cpp +53 -0
  275. nemo_py-0.1.1/src/runtime/worker.cpp +67 -0
  276. nemo_py-0.1.1/src/runtime/worker_pool.cpp +93 -0
  277. nemo_py-0.1.1/src/sql/ast/ast_formatter.cpp +88 -0
  278. nemo_py-0.1.1/src/sql/ast/expression.cpp +3 -0
  279. nemo_py-0.1.1/src/sql/ast/expressions.cpp +12 -0
  280. nemo_py-0.1.1/src/sql/ast/literals.cpp +10 -0
  281. nemo_py-0.1.1/src/sql/ast/select.cpp +10 -0
  282. nemo_py-0.1.1/src/sql/ast/statement.cpp +3 -0
  283. nemo_py-0.1.1/src/sql/lexer.cpp +258 -0
  284. nemo_py-0.1.1/src/sql/parser.cpp +225 -0
  285. nemo_py-0.1.1/src/sql/source_location.cpp +12 -0
  286. nemo_py-0.1.1/src/sql/sql_error.cpp +12 -0
  287. nemo_py-0.1.1/src/sql/token.cpp +3 -0
  288. nemo_py-0.1.1/src/sql/token_type.cpp +17 -0
  289. nemo_py-0.1.1/src/storage/buffer_frame.cpp +3 -0
  290. nemo_py-0.1.1/src/storage/buffer_pool.cpp +210 -0
  291. nemo_py-0.1.1/src/storage/checksum.cpp +45 -0
  292. nemo_py-0.1.1/src/storage/clock_replacer.cpp +75 -0
  293. nemo_py-0.1.1/src/storage/database_header.cpp +45 -0
  294. nemo_py-0.1.1/src/storage/disk_manager.cpp +309 -0
  295. nemo_py-0.1.1/src/storage/file_manager.cpp +144 -0
  296. nemo_py-0.1.1/src/storage/free_page_manager.cpp +37 -0
  297. nemo_py-0.1.1/src/storage/page.cpp +47 -0
  298. nemo_py-0.1.1/src/storage/page_handle.cpp +60 -0
  299. nemo_py-0.1.1/src/storage/page_header.cpp +38 -0
  300. nemo_py-0.1.1/src/storage/record.cpp +3 -0
  301. nemo_py-0.1.1/src/storage/record_deserializer.cpp +18 -0
  302. nemo_py-0.1.1/src/storage/record_header.cpp +3 -0
  303. nemo_py-0.1.1/src/storage/record_id.cpp +12 -0
  304. nemo_py-0.1.1/src/storage/record_serializer.cpp +130 -0
  305. nemo_py-0.1.1/src/storage/record_view.cpp +171 -0
  306. nemo_py-0.1.1/src/storage/slot.cpp +3 -0
  307. nemo_py-0.1.1/src/storage/slot_directory.cpp +3 -0
  308. nemo_py-0.1.1/src/storage/table_heap.cpp +261 -0
  309. nemo_py-0.1.1/src/storage/table_page.cpp +264 -0
  310. nemo_py-0.1.1/src/storage/tuple_layout.cpp +25 -0
  311. nemo_py-0.1.1/src/transaction/snapshot.cpp +22 -0
  312. nemo_py-0.1.1/src/transaction/transaction.cpp +28 -0
  313. nemo_py-0.1.1/src/transaction/transaction_manager.cpp +134 -0
  314. nemo_py-0.1.1/src/transaction/transaction_registry.cpp +66 -0
  315. nemo_py-0.1.1/src/transaction/visibility.cpp +59 -0
  316. nemo_py-0.1.1/src/types/array.cpp +139 -0
  317. nemo_py-0.1.1/src/types/decimal.cpp +154 -0
  318. nemo_py-0.1.1/src/types/dict.cpp +120 -0
  319. nemo_py-0.1.1/src/types/json.cpp +164 -0
  320. nemo_py-0.1.1/src/types/temporal.cpp +90 -0
  321. nemo_py-0.1.1/src/types/type_cast.cpp +120 -0
  322. nemo_py-0.1.1/src/types/type_comparator.cpp +13 -0
  323. nemo_py-0.1.1/src/types/type_hasher.cpp +63 -0
  324. nemo_py-0.1.1/src/types/type_info.cpp +45 -0
  325. nemo_py-0.1.1/src/types/type_registry.cpp +122 -0
  326. nemo_py-0.1.1/src/types/type_serializer.cpp +296 -0
  327. nemo_py-0.1.1/src/types/uuid.cpp +81 -0
  328. nemo_py-0.1.1/src/types/value.cpp +129 -0
  329. nemo_py-0.1.1/src/types/value_view.cpp +3 -0
  330. nemo_py-0.1.1/src/wal/checkpoint_manager.cpp +65 -0
  331. nemo_py-0.1.1/src/wal/log_reader.cpp +122 -0
  332. nemo_py-0.1.1/src/wal/log_record.cpp +118 -0
  333. nemo_py-0.1.1/src/wal/recovery_manager.cpp +245 -0
  334. nemo_py-0.1.1/src/wal/wal_manager.cpp +115 -0
  335. nemo_py-0.1.1/src/wal/wal_segment.cpp +148 -0
  336. nemo_py-0.1.1/tools/generate_dataset.py +36 -0
@@ -0,0 +1,157 @@
1
+ name: Release Nemo
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+
8
+ jobs:
9
+ build_wheels:
10
+ name: Build wheels on ${{ matrix.os }}
11
+ runs-on: ${{ matrix.os }}
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, windows-latest, macos-latest]
16
+
17
+ steps:
18
+ - name: Checkout repository
19
+ uses: actions/checkout@v4
20
+ with:
21
+ submodules: true
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: '3.11'
27
+
28
+ - name: Install cibuildwheel
29
+ run: python -m pip install "cibuildwheel>=2.20.0"
30
+
31
+ - name: Build nemo wheels
32
+ run: python -m cibuildwheel --output-dir wheelhouse .
33
+ env:
34
+ CIBW_BUILD: "cp39-* cp310-* cp311-* cp312-* cp313-*"
35
+ CIBW_SKIP: "*-musllinux_*"
36
+ CIBW_ARCHS_LINUX: "x86_64"
37
+ CIBW_ARCHS_MACOS: "x86_64 arm64"
38
+ CIBW_ARCHS_WINDOWS: "AMD64"
39
+ CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
40
+ CIBW_BEFORE_ALL_LINUX: "yum install -y gcc-toolset-12-gcc-c++ || true"
41
+ CIBW_ENVIRONMENT_LINUX: 'PATH="/opt/rh/gcc-toolset-12/root/usr/bin:$PATH" CC="/opt/rh/gcc-toolset-12/root/usr/bin/gcc" CXX="/opt/rh/gcc-toolset-12/root/usr/bin/g++"'
42
+ CIBW_ENVIRONMENT_MACOS: 'MACOSX_DEPLOYMENT_TARGET="11.0"'
43
+
44
+ - name: Upload wheel artifacts
45
+ uses: actions/upload-artifact@v4
46
+ with:
47
+ name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
48
+ path: ./wheelhouse/*.whl
49
+ if-no-files-found: error
50
+
51
+ build_sdist:
52
+ name: Build source distribution
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - name: Checkout repository
56
+ uses: actions/checkout@v4
57
+ with:
58
+ submodules: true
59
+
60
+ - name: Set up Python
61
+ uses: actions/setup-python@v5
62
+ with:
63
+ python-version: '3.11'
64
+
65
+ - name: Build sdist
66
+ run: |
67
+ python -m pip install build
68
+ python -m build --sdist .
69
+
70
+ - name: Upload sdist artifact
71
+ uses: actions/upload-artifact@v4
72
+ with:
73
+ name: cibw-sdist
74
+ path: dist/*.tar.gz
75
+ if-no-files-found: error
76
+
77
+ publish_pypi:
78
+ name: Publish to PyPI
79
+ needs: [build_wheels, build_sdist]
80
+ runs-on: ubuntu-latest
81
+ environment:
82
+ name: pypi
83
+ url: https://pypi.org/project/nemo-py
84
+ permissions:
85
+ id-token: write
86
+ contents: read
87
+ if: github.event_name == 'release' && github.event.action == 'published'
88
+
89
+ steps:
90
+ - name: Download all built artifacts
91
+ uses: actions/download-artifact@v4
92
+ with:
93
+ pattern: cibw-*
94
+ path: dist
95
+ merge-multiple: true
96
+
97
+ - name: Publish package to PyPI
98
+ uses: pypa/gh-action-pypi-publish@release/v1
99
+
100
+ build_cpp:
101
+ name: Build C++ Library on ${{ matrix.os }}
102
+ runs-on: ${{ matrix.os }}
103
+ permissions:
104
+ contents: write
105
+ strategy:
106
+ fail-fast: false
107
+ matrix:
108
+ os: [ubuntu-latest, windows-latest, macos-latest]
109
+
110
+ steps:
111
+ - name: Checkout repository
112
+ uses: actions/checkout@v4
113
+ with:
114
+ submodules: true
115
+
116
+ - name: Configure CMake
117
+ run: cmake -B build -DCMAKE_BUILD_TYPE=Release -DNEMO_BUILD_TESTS=OFF -DNEMO_BUILD_EXAMPLES=OFF
118
+
119
+ - name: Build C++ library
120
+ run: cmake --build build --config Release
121
+
122
+ - name: Package library (Unix)
123
+ if: runner.os != 'Windows'
124
+ run: |
125
+ mkdir -p nemo-cpp-${{ runner.os }}
126
+ find build -type f -name "libnemo.*" -exec cp {} nemo-cpp-${{ runner.os }}/ \; 2>/dev/null || true
127
+ cp -r include nemo-cpp-${{ runner.os }}/
128
+ tar -czvf nemo-cpp-${{ runner.os }}.tar.gz nemo-cpp-${{ runner.os }}
129
+
130
+ - name: Package library (Windows)
131
+ if: runner.os == 'Windows'
132
+ shell: pwsh
133
+ run: |
134
+ New-Item -ItemType Directory -Force -Path nemo-cpp-Windows
135
+ Get-ChildItem -Path build -Recurse -File -Include nemo.lib, nemo.dll | ForEach-Object { Copy-Item $_.FullName nemo-cpp-Windows/ }
136
+ Copy-Item -Recurse include nemo-cpp-Windows/
137
+ Compress-Archive -Force -Path nemo-cpp-Windows -DestinationPath nemo-cpp-Windows.zip
138
+
139
+ - name: Upload C++ Artifacts to Workflow
140
+ uses: actions/upload-artifact@v4
141
+ with:
142
+ name: nemo-cpp-${{ runner.os }}
143
+ path: |
144
+ nemo-cpp-*.tar.gz
145
+ nemo-cpp-*.zip
146
+ if-no-files-found: ignore
147
+
148
+ - name: Attach C++ Artifacts to GitHub Release
149
+ if: github.event_name == 'release' && github.event.action == 'published'
150
+ uses: softprops/action-gh-release@v2
151
+ with:
152
+ files: |
153
+ nemo-cpp-*.tar.gz
154
+ nemo-cpp-*.zip
155
+ fail_on_unmatched_files: false
156
+ env:
157
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,104 @@
1
+ # =============================================================================
2
+ # NEMO DATABASE ENGINE — GITIGNORE CONFIGURATION
3
+ # =============================================================================
4
+
5
+ # --- 1. Compiled Binaries, Libraries & Debug Symbols ---
6
+ *.o
7
+ *.obj
8
+ *.slo
9
+ *.lo
10
+ *.so
11
+ *.dylib
12
+ *.dll
13
+ *.pyd
14
+ *.a
15
+ *.lib
16
+ *.exp
17
+ *.lai
18
+ *.la
19
+ *.exe
20
+ *.out
21
+ *.app
22
+ *.pdb
23
+ *.ilk
24
+ *.idb
25
+ *.ipdb
26
+ *.iobj
27
+
28
+ # --- 2. CMake, MSVC & Native Build Outputs ---
29
+ build/
30
+ build_*/
31
+ _skbuild/
32
+ wheelhouse/
33
+ CMakeCache.txt
34
+ CMakeFiles/
35
+ CMakeScripts/
36
+ CMakeUserPresets.json
37
+ Testing/
38
+ Makefile
39
+ cmake_install.cmake
40
+ install_manifest.txt
41
+ compile_commands.json
42
+ .cache/
43
+ x64/
44
+ x86/
45
+ Debug/
46
+ Release/
47
+
48
+ # --- 3. Python Bytecode, Packaging & Distribution ---
49
+ __pycache__/
50
+ *.py[cod]
51
+ *$py.class
52
+ *.whl
53
+ dist/
54
+ *.egg-info/
55
+ package/
56
+ .pytest_cache/
57
+ .mypy_cache/
58
+ .ruff_cache/
59
+ .coverage
60
+ htmlcov/
61
+ .tox/
62
+
63
+ # --- 4. Virtual Environments & Local Config ---
64
+ .env
65
+ .env.*
66
+ .Python
67
+ env/
68
+ venv/
69
+ .venv/
70
+ venv-*/
71
+
72
+ # --- 5. Database Binary Files, WAL & Logs ---
73
+ *.nm
74
+ *.nm.meta
75
+ *.nm-wal
76
+ *.nm-shm
77
+ *.db
78
+ *.db-wal
79
+ *.db-shm
80
+ *.sqlite
81
+ *.sqlite3
82
+ *.log
83
+
84
+ # --- 6. Local Test Scripts, Benchmarks & Datasets ---
85
+ tests/
86
+ test.py
87
+ test2.py
88
+ dataset/
89
+ ci_logs/
90
+ scratch/
91
+
92
+ # --- 7. IDE, Editor & OS System Files ---
93
+ .idea/
94
+ .vscode/
95
+ *.swp
96
+ *.swo
97
+ *~
98
+ *.vcxproj.user
99
+ *.vcxproj.filters.user
100
+ *.sublime-project
101
+ *.sublime-workspace
102
+ .DS_Store
103
+ Thumbs.db
104
+ desktop.ini
@@ -0,0 +1,52 @@
1
+ cmake_minimum_required(VERSION 3.20)
2
+
3
+ project(
4
+ Nemo
5
+ VERSION 0.1.1
6
+ DESCRIPTION "Nemo: A high-performance embedded relational database engine"
7
+ LANGUAGES CXX
8
+ )
9
+
10
+ # Nemo Options and strict compilation flags
11
+ include(cmake/NemoOptions.cmake)
12
+
13
+ # Ensure C++20 is used
14
+ set(CMAKE_CXX_STANDARD 20)
15
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
16
+ set(CMAKE_CXX_EXTENSIONS OFF)
17
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
18
+
19
+ # Add subdirectories
20
+ add_subdirectory(src)
21
+
22
+ if(NEMO_BUILD_EXAMPLES)
23
+ add_subdirectory(examples)
24
+ endif()
25
+
26
+ if(NEMO_BUILD_TESTS AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tests/CMakeLists.txt")
27
+ enable_testing()
28
+ add_subdirectory(tests)
29
+ endif()
30
+
31
+ option(NEMO_BUILD_PYTHON "Build Python bindings" OFF)
32
+ if(SKBUILD OR DEFINED ENV{NEMO_BUILD_PYTHON})
33
+ set(NEMO_BUILD_PYTHON ON CACHE BOOL "Build Python bindings" FORCE)
34
+ endif()
35
+
36
+ if(NEMO_BUILD_PYTHON)
37
+ find_package(Python3 COMPONENTS Interpreter Development.Module REQUIRED)
38
+ find_package(pybind11 CONFIG QUIET)
39
+ if(NOT pybind11_FOUND)
40
+ include(FetchContent)
41
+ FetchContent_Declare(
42
+ pybind11
43
+ GIT_REPOSITORY https://github.com/pybind/pybind11.git
44
+ GIT_TAG v2.12.0
45
+ )
46
+ FetchContent_MakeAvailable(pybind11)
47
+ endif()
48
+
49
+ pybind11_add_module(_nemo src/python/module.cpp)
50
+ target_link_libraries(_nemo PRIVATE nemo)
51
+ install(TARGETS _nemo DESTINATION nemo)
52
+ endif()
@@ -0,0 +1,54 @@
1
+ {
2
+ "version": 3,
3
+ "cmakeMinimumRequired": {
4
+ "major": 3,
5
+ "minor": 20,
6
+ "patch": 0
7
+ },
8
+ "configurePresets": [
9
+ {
10
+ "name": "default",
11
+ "displayName": "Default Config",
12
+ "description": "Default configuration using Ninja if available",
13
+ "generator": "Ninja",
14
+ "binaryDir": "${sourceDir}/build",
15
+ "cacheVariables": {
16
+ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
17
+ }
18
+ },
19
+ {
20
+ "name": "debug",
21
+ "displayName": "Debug Config",
22
+ "inherits": "default",
23
+ "cacheVariables": {
24
+ "CMAKE_BUILD_TYPE": "Debug"
25
+ }
26
+ },
27
+ {
28
+ "name": "release",
29
+ "displayName": "Release Config",
30
+ "inherits": "default",
31
+ "cacheVariables": {
32
+ "CMAKE_BUILD_TYPE": "Release"
33
+ }
34
+ }
35
+ ],
36
+ "buildPresets": [
37
+ {
38
+ "name": "debug",
39
+ "configurePreset": "debug"
40
+ },
41
+ {
42
+ "name": "release",
43
+ "configurePreset": "release"
44
+ }
45
+ ],
46
+ "testPresets": [
47
+ {
48
+ "name": "default",
49
+ "configurePreset": "default",
50
+ "output": {"outputOnFailure": true},
51
+ "execution": {"noTestsAction": "error", "stopOnFailure": true}
52
+ }
53
+ ]
54
+ }