clickhouse-native 0.0.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 (260) hide show
  1. checksums.yaml +7 -0
  2. data/ext/clickhouse_native/client.cpp +847 -0
  3. data/ext/clickhouse_native/extconf.rb +101 -0
  4. data/ext/clickhouse_native/vendor/clickhouse-cpp/.clang-format +11 -0
  5. data/ext/clickhouse_native/vendor/clickhouse-cpp/.git +1 -0
  6. data/ext/clickhouse_native/vendor/clickhouse-cpp/.gitattributes +63 -0
  7. data/ext/clickhouse_native/vendor/clickhouse-cpp/.github/CODEOWNERS +1 -0
  8. data/ext/clickhouse_native/vendor/clickhouse-cpp/.github/workflows/linux.yml +139 -0
  9. data/ext/clickhouse_native/vendor/clickhouse-cpp/.github/workflows/macos.yml +87 -0
  10. data/ext/clickhouse_native/vendor/clickhouse-cpp/.github/workflows/windows_mingw.yml +102 -0
  11. data/ext/clickhouse_native/vendor/clickhouse-cpp/.github/workflows/windows_msvc.yml +74 -0
  12. data/ext/clickhouse_native/vendor/clickhouse-cpp/.gitignore +280 -0
  13. data/ext/clickhouse_native/vendor/clickhouse-cpp/.travis.yml +62 -0
  14. data/ext/clickhouse_native/vendor/clickhouse-cpp/CMakeLists.txt +157 -0
  15. data/ext/clickhouse_native/vendor/clickhouse-cpp/LICENSE +206 -0
  16. data/ext/clickhouse_native/vendor/clickhouse-cpp/README.md +260 -0
  17. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/CMakeLists.txt +246 -0
  18. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/buffer.h +10 -0
  19. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/compressed.cpp +258 -0
  20. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/compressed.h +48 -0
  21. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/endpoints_iterator.cpp +20 -0
  22. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/endpoints_iterator.h +34 -0
  23. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/input.cpp +96 -0
  24. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/input.h +103 -0
  25. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/open_telemetry.h +23 -0
  26. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/output.cpp +119 -0
  27. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/output.h +142 -0
  28. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/platform.cpp +1 -0
  29. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/platform.h +33 -0
  30. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/projected_iterator.h +55 -0
  31. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/singleton.h +11 -0
  32. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/socket.cpp +489 -0
  33. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/socket.h +177 -0
  34. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/sslsocket.cpp +307 -0
  35. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/sslsocket.h +111 -0
  36. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/string_utils.h +28 -0
  37. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/string_view.h +142 -0
  38. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/uuid.h +10 -0
  39. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/wire_format.cpp +177 -0
  40. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/base/wire_format.h +79 -0
  41. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/block.cpp +134 -0
  42. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/block.h +114 -0
  43. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/client.cpp +1269 -0
  44. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/client.h +320 -0
  45. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/array.cpp +175 -0
  46. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/array.h +321 -0
  47. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/column.cpp +24 -0
  48. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/column.h +107 -0
  49. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/date.cpp +365 -0
  50. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/date.h +245 -0
  51. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/decimal.cpp +255 -0
  52. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/decimal.h +50 -0
  53. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/enum.cpp +123 -0
  54. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/enum.h +65 -0
  55. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/factory.cpp +285 -0
  56. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/factory.h +14 -0
  57. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/geo.cpp +108 -0
  58. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/geo.h +79 -0
  59. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/ip4.cpp +117 -0
  60. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/ip4.h +71 -0
  61. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/ip6.cpp +108 -0
  62. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/ip6.h +66 -0
  63. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/itemview.cpp +101 -0
  64. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/itemview.h +86 -0
  65. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/lowcardinality.cpp +527 -0
  66. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/lowcardinality.h +221 -0
  67. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/lowcardinalityadaptor.h +63 -0
  68. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/map.cpp +87 -0
  69. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/map.h +257 -0
  70. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/nothing.h +87 -0
  71. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/nullable.cpp +109 -0
  72. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/nullable.h +153 -0
  73. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/numeric.cpp +126 -0
  74. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/numeric.h +88 -0
  75. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/string.cpp +333 -0
  76. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/string.h +145 -0
  77. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/time.cpp +155 -0
  78. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/time.h +118 -0
  79. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/tuple.cpp +106 -0
  80. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/tuple.h +178 -0
  81. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/utils.h +41 -0
  82. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/uuid.cpp +80 -0
  83. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/columns/uuid.h +58 -0
  84. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/error_codes.h +595 -0
  85. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/exceptions.h +66 -0
  86. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/protocol.h +54 -0
  87. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/query.cpp +25 -0
  88. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/query.h +246 -0
  89. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/server_exception.h +16 -0
  90. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/types/type_parser.cpp +314 -0
  91. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/types/type_parser.h +89 -0
  92. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/types/types.cpp +484 -0
  93. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/types/types.h +397 -0
  94. data/ext/clickhouse_native/vendor/clickhouse-cpp/clickhouse/version.h +14 -0
  95. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/Findcityhash.cmake +26 -0
  96. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/Findlz4.cmake +39 -0
  97. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/Findzstd.cmake +39 -0
  98. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/cpp17.cmake +8 -0
  99. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/openssl.cmake +8 -0
  100. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/subdirs.cmake +5 -0
  101. data/ext/clickhouse_native/vendor/clickhouse-cpp/cmake/version.cmake +87 -0
  102. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/CMakeLists.txt +9 -0
  103. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/attributes.h +682 -0
  104. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/config.h +714 -0
  105. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/internal/bits.h +219 -0
  106. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/macros.h +147 -0
  107. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/optimization.h +241 -0
  108. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/options.h +238 -0
  109. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/policy_checks.h +111 -0
  110. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/base/port.h +26 -0
  111. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/numeric/int128.cc +390 -0
  112. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/numeric/int128.h +1092 -0
  113. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/numeric/int128_have_intrinsic.inc +302 -0
  114. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/absl/absl/numeric/int128_no_intrinsic.inc +308 -0
  115. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/BUCK +13 -0
  116. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/CMakeLists.txt +7 -0
  117. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/COPYING +19 -0
  118. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/city.cc +469 -0
  119. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/city.h +90 -0
  120. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/citycrc.h +43 -0
  121. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/cityhash/cityhash/config.h +118 -0
  122. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/BUCK +14 -0
  123. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/CMakeLists.txt +4 -0
  124. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/LICENSE +28 -0
  125. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/README.md +1 -0
  126. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-death-test.h +346 -0
  127. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-matchers.h +930 -0
  128. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-message.h +219 -0
  129. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-param-test.h +507 -0
  130. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-printers.h +1029 -0
  131. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-spi.h +238 -0
  132. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-test-part.h +184 -0
  133. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest-typed-test.h +329 -0
  134. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest.h +2495 -0
  135. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest_pred_impl.h +359 -0
  136. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/gtest_prod.h +61 -0
  137. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/custom/README.md +56 -0
  138. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/custom/gtest-port.h +37 -0
  139. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/custom/gtest-printers.h +42 -0
  140. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/custom/gtest.h +37 -0
  141. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-death-test-internal.h +304 -0
  142. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-filepath.h +211 -0
  143. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-internal.h +1560 -0
  144. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-param-util.h +947 -0
  145. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-port-arch.h +114 -0
  146. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-port.h +2389 -0
  147. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-string.h +175 -0
  148. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/include/gtest/internal/gtest-type-util.h +183 -0
  149. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-all.cc +48 -0
  150. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-death-test.cc +1644 -0
  151. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-filepath.cc +369 -0
  152. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-internal-inl.h +1221 -0
  153. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-matchers.cc +97 -0
  154. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-port.cc +1433 -0
  155. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-printers.cc +533 -0
  156. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-test-part.cc +108 -0
  157. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest-typed-test.cc +107 -0
  158. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest.cc +6746 -0
  159. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/gtest/src/gtest_main.cc +54 -0
  160. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/BUCK +13 -0
  161. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/CMakeLists.txt +8 -0
  162. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/LICENSE +24 -0
  163. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/lz4.c +2402 -0
  164. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/lz4.h +764 -0
  165. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/lz4hc.c +1554 -0
  166. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/lz4/lz4/lz4hc.h +438 -0
  167. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/BUCK +232 -0
  168. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/CMakeLists.txt +115 -0
  169. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/LICENSE +30 -0
  170. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/allocations.h +55 -0
  171. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/bits.h +200 -0
  172. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/bitstream.h +437 -0
  173. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/compiler.h +358 -0
  174. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/cpu.h +213 -0
  175. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/debug.c +24 -0
  176. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/debug.h +107 -0
  177. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/entropy_common.c +340 -0
  178. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/error_private.c +63 -0
  179. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/error_private.h +159 -0
  180. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/fse.h +639 -0
  181. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/fse_decompress.c +311 -0
  182. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/huf.h +273 -0
  183. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/mem.h +435 -0
  184. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/pool.c +371 -0
  185. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/pool.h +90 -0
  186. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/portability_macros.h +156 -0
  187. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/threading.c +176 -0
  188. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/threading.h +150 -0
  189. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/xxhash.c +24 -0
  190. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/xxhash.h +5686 -0
  191. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/zstd_common.c +48 -0
  192. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/zstd_deps.h +111 -0
  193. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/zstd_internal.h +392 -0
  194. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/common/zstd_trace.h +163 -0
  195. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/clevels.h +134 -0
  196. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/fse_compress.c +624 -0
  197. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/hist.c +181 -0
  198. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/hist.h +75 -0
  199. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/huf_compress.c +1435 -0
  200. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress.c +7032 -0
  201. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_internal.h +1532 -0
  202. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_literals.c +235 -0
  203. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_literals.h +39 -0
  204. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_sequences.c +442 -0
  205. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_sequences.h +54 -0
  206. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_superblock.c +577 -0
  207. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_compress_superblock.h +32 -0
  208. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_cwksp.h +742 -0
  209. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_double_fast.c +758 -0
  210. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_double_fast.h +39 -0
  211. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_fast.c +960 -0
  212. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_fast.h +38 -0
  213. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_lazy.c +2157 -0
  214. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_lazy.h +127 -0
  215. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_ldm.c +724 -0
  216. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_ldm.h +117 -0
  217. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_ldm_geartab.h +106 -0
  218. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_opt.c +1472 -0
  219. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstd_opt.h +56 -0
  220. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstdmt_compress.c +1867 -0
  221. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/compress/zstdmt_compress.h +113 -0
  222. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/huf_decompress.c +1882 -0
  223. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/huf_decompress_amd64.S +576 -0
  224. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_ddict.c +244 -0
  225. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_ddict.h +44 -0
  226. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_decompress.c +2355 -0
  227. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_decompress_block.c +2192 -0
  228. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_decompress_block.h +73 -0
  229. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/decompress/zstd_decompress_internal.h +238 -0
  230. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/cover.c +1257 -0
  231. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/cover.h +158 -0
  232. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/divsufsort.c +1913 -0
  233. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/divsufsort.h +67 -0
  234. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/fastcover.c +766 -0
  235. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/dictBuilder/zdict.c +1127 -0
  236. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_legacy.h +422 -0
  237. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v01.c +2125 -0
  238. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v01.h +94 -0
  239. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v02.c +3477 -0
  240. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v02.h +93 -0
  241. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v03.c +3117 -0
  242. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v03.h +93 -0
  243. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v04.c +3605 -0
  244. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v04.h +142 -0
  245. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v05.c +4004 -0
  246. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v05.h +162 -0
  247. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v06.c +4113 -0
  248. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v06.h +172 -0
  249. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v07.c +4498 -0
  250. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/legacy/zstd_v07.h +187 -0
  251. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/zdict.h +474 -0
  252. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/zstd.h +3020 -0
  253. data/ext/clickhouse_native/vendor/clickhouse-cpp/contrib/zstd/zstd/zstd_errors.h +114 -0
  254. data/lib/clickhouse_native/clickhouse_native.bundle +0 -0
  255. data/lib/clickhouse_native/client.rb +50 -0
  256. data/lib/clickhouse_native/errors.rb +23 -0
  257. data/lib/clickhouse_native/pool.rb +49 -0
  258. data/lib/clickhouse_native/version.rb +3 -0
  259. data/lib/clickhouse_native.rb +8 -0
  260. metadata +369 -0
@@ -0,0 +1,365 @@
1
+ #include "date.h"
2
+ #include <cstdint>
3
+
4
+ namespace clickhouse {
5
+
6
+ ColumnDate::ColumnDate()
7
+ : Column(Type::CreateDate())
8
+ , data_(std::make_shared<ColumnUInt16>())
9
+ {
10
+ }
11
+
12
+ ColumnDate::ColumnDate(std::vector<uint16_t>&& data)
13
+ : Column(Type::CreateDate())
14
+ , data_(std::make_shared<ColumnUInt16>(std::move(data)))
15
+ {
16
+ }
17
+
18
+ void ColumnDate::Append(const std::time_t& value) {
19
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
20
+ data_->Append(static_cast<uint16_t>(value / std::time_t(86400)));
21
+ }
22
+
23
+ void ColumnDate::Clear() {
24
+ data_->Clear();
25
+ }
26
+
27
+ std::time_t ColumnDate::At(size_t n) const {
28
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
29
+ return static_cast<std::time_t>(data_->At(n)) * 86400;
30
+ }
31
+
32
+ void ColumnDate::AppendRaw(uint16_t value) {
33
+ data_->Append(value);
34
+ }
35
+
36
+ uint16_t ColumnDate::RawAt(size_t n) const {
37
+ return data_->At(n);
38
+ }
39
+
40
+ void ColumnDate::Append(ColumnRef column) {
41
+ if (auto col = column->As<ColumnDate>()) {
42
+ data_->Append(col->data_);
43
+ }
44
+ }
45
+
46
+ std::vector<uint16_t>& ColumnDate::GetWritableData() {
47
+ return data_->GetWritableData();
48
+ }
49
+
50
+ void ColumnDate::Reserve(size_t new_cap) {
51
+ data_->Reserve(new_cap);
52
+ }
53
+
54
+ size_t ColumnDate::Capacity() const {
55
+ return data_->Capacity();
56
+ }
57
+
58
+ bool ColumnDate::LoadBody(InputStream* input, size_t rows) {
59
+ return data_->LoadBody(input, rows);
60
+ }
61
+
62
+ void ColumnDate::SaveBody(OutputStream* output) {
63
+ data_->SaveBody(output);
64
+ }
65
+
66
+ size_t ColumnDate::Size() const {
67
+ return data_->Size();
68
+ }
69
+
70
+ ColumnRef ColumnDate::Slice(size_t begin, size_t len) const {
71
+ auto col = data_->Slice(begin, len)->As<ColumnUInt16>();
72
+ auto result = std::make_shared<ColumnDate>();
73
+
74
+ result->data_->Append(col);
75
+
76
+ return result;
77
+ }
78
+
79
+ ColumnRef ColumnDate::CloneEmpty() const {
80
+ return std::make_shared<ColumnDate>();
81
+ }
82
+
83
+ void ColumnDate::Swap(Column& other) {
84
+ auto & col = dynamic_cast<ColumnDate &>(other);
85
+ data_.swap(col.data_);
86
+ }
87
+
88
+ ItemView ColumnDate::GetItem(size_t index) const {
89
+ return ItemView(Type::Date, data_->GetItem(index));
90
+ }
91
+
92
+
93
+ ColumnDate32::ColumnDate32()
94
+ : Column(Type::CreateDate32())
95
+ , data_(std::make_shared<ColumnInt32>())
96
+ {
97
+ }
98
+
99
+ ColumnDate32::ColumnDate32(std::vector<int32_t>&& data)
100
+ : Column(Type::CreateDate32())
101
+ , data_(std::make_shared<ColumnInt32>(std::move(data)))
102
+ {
103
+ }
104
+
105
+ void ColumnDate32::Append(const std::time_t& value) {
106
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
107
+ data_->Append(static_cast<int32_t>(value / std::time_t(86400)));
108
+ }
109
+
110
+ void ColumnDate32::Clear() {
111
+ data_->Clear();
112
+ }
113
+
114
+ std::time_t ColumnDate32::At(size_t n) const {
115
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
116
+ return static_cast<std::time_t>(data_->At(n)) * 86400;
117
+ }
118
+
119
+ void ColumnDate32::Append(ColumnRef column) {
120
+ if (auto col = column->As<ColumnDate32>()) {
121
+ data_->Append(col->data_);
122
+ }
123
+ }
124
+
125
+ std::vector<int32_t>& ColumnDate32::GetWritableData() {
126
+ return data_->GetWritableData();
127
+ }
128
+
129
+ void ColumnDate32::Reserve(size_t new_cap) {
130
+ data_->Reserve(new_cap);
131
+ }
132
+
133
+ size_t ColumnDate32::Capacity() const {
134
+ return data_->Capacity();
135
+ }
136
+
137
+ void ColumnDate32::AppendRaw(int32_t value) {
138
+ data_->Append(value);
139
+ }
140
+
141
+ int32_t ColumnDate32::RawAt(size_t n) const {
142
+ return data_->At(n);
143
+ }
144
+
145
+ bool ColumnDate32::LoadBody(InputStream* input, size_t rows) {
146
+ return data_->LoadBody(input, rows);
147
+ }
148
+
149
+ void ColumnDate32::SaveBody(OutputStream* output) {
150
+ data_->SaveBody(output);
151
+ }
152
+
153
+ size_t ColumnDate32::Size() const {
154
+ return data_->Size();
155
+ }
156
+
157
+ ColumnRef ColumnDate32::Slice(size_t begin, size_t len) const {
158
+ auto col = data_->Slice(begin, len)->As<ColumnInt32>();
159
+ auto result = std::make_shared<ColumnDate32>();
160
+
161
+ result->data_->Append(col);
162
+
163
+ return result;
164
+ }
165
+
166
+ ColumnRef ColumnDate32::CloneEmpty() const {
167
+ return std::make_shared<ColumnDate32>();
168
+ }
169
+
170
+ void ColumnDate32::Swap(Column& other) {
171
+ auto & col = dynamic_cast<ColumnDate32 &>(other);
172
+ data_.swap(col.data_);
173
+ }
174
+
175
+ ItemView ColumnDate32::GetItem(size_t index) const {
176
+ return ItemView{Type()->GetCode(), data_->GetItem(index)};
177
+ }
178
+
179
+ ColumnDateTime::ColumnDateTime()
180
+ : Column(Type::CreateDateTime())
181
+ , data_(std::make_shared<ColumnUInt32>())
182
+ {
183
+ }
184
+
185
+ ColumnDateTime::ColumnDateTime(std::string timezone)
186
+ : Column(Type::CreateDateTime(std::move(timezone)))
187
+ , data_(std::make_shared<ColumnUInt32>())
188
+ {
189
+ }
190
+
191
+ ColumnDateTime::ColumnDateTime(std::vector<uint32_t>&& data)
192
+ : Column(Type::CreateDateTime())
193
+ , data_(std::make_shared<ColumnUInt32>(std::move(data))) {
194
+ }
195
+
196
+ ColumnDateTime::ColumnDateTime(std::string timezone, std::vector<uint32_t>&& data)
197
+ : Column(Type::CreateDateTime(std::move(timezone)))
198
+ , data_(std::make_shared<ColumnUInt32>(std::move(data))) {
199
+ }
200
+
201
+ void ColumnDateTime::Append(const std::time_t& value) {
202
+ data_->Append(static_cast<uint32_t>(value));
203
+ }
204
+
205
+ std::time_t ColumnDateTime::At(size_t n) const {
206
+ return data_->At(n);
207
+ }
208
+
209
+ void ColumnDateTime::AppendRaw(uint32_t value) {
210
+ data_->Append(value);
211
+ }
212
+
213
+ uint32_t ColumnDateTime::RawAt(size_t n) const {
214
+ return data_->At(n);
215
+ }
216
+
217
+ std::string ColumnDateTime::Timezone() const {
218
+ return type_->As<DateTimeType>()->Timezone();
219
+ }
220
+
221
+ void ColumnDateTime::Append(ColumnRef column) {
222
+ if (auto col = column->As<ColumnDateTime>()) {
223
+ data_->Append(col->data_);
224
+ }
225
+ }
226
+
227
+ std::vector<uint32_t>& ColumnDateTime::GetWritableData() {
228
+ return data_->GetWritableData();
229
+ }
230
+
231
+ void ColumnDateTime::Reserve(size_t new_cap) {
232
+ data_->Reserve(new_cap);
233
+ }
234
+
235
+ size_t ColumnDateTime::Capacity() const {
236
+ return data_->Capacity();
237
+ }
238
+
239
+ bool ColumnDateTime::LoadBody(InputStream* input, size_t rows) {
240
+ return data_->LoadBody(input, rows);
241
+ }
242
+
243
+ void ColumnDateTime::SaveBody(OutputStream* output) {
244
+ data_->SaveBody(output);
245
+ }
246
+
247
+ size_t ColumnDateTime::Size() const {
248
+ return data_->Size();
249
+ }
250
+
251
+ void ColumnDateTime::Clear() {
252
+ data_->Clear();
253
+ }
254
+
255
+ ColumnRef ColumnDateTime::Slice(size_t begin, size_t len) const {
256
+ auto col = data_->Slice(begin, len)->As<ColumnUInt32>();
257
+ auto result = std::make_shared<ColumnDateTime>();
258
+
259
+ result->data_->Append(col);
260
+
261
+ return result;
262
+ }
263
+
264
+ ColumnRef ColumnDateTime::CloneEmpty() const {
265
+ return std::make_shared<ColumnDateTime>();
266
+ }
267
+
268
+ void ColumnDateTime::Swap(Column& other) {
269
+ auto & col = dynamic_cast<ColumnDateTime &>(other);
270
+ data_.swap(col.data_);
271
+ }
272
+
273
+ ItemView ColumnDateTime::GetItem(size_t index) const {
274
+ return ItemView(Type::DateTime, data_->GetItem(index));
275
+ }
276
+
277
+ ColumnDateTime64::ColumnDateTime64(size_t precision)
278
+ : ColumnDateTime64(Type::CreateDateTime64(precision), std::make_shared<ColumnDecimal>(18ul, precision))
279
+ {}
280
+
281
+ ColumnDateTime64::ColumnDateTime64(size_t precision, std::string timezone)
282
+ : ColumnDateTime64(Type::CreateDateTime64(precision, std::move(timezone)), std::make_shared<ColumnDecimal>(18ul, precision))
283
+ {}
284
+
285
+ ColumnDateTime64::ColumnDateTime64(TypeRef type, std::shared_ptr<ColumnDecimal> data)
286
+ : Column(type),
287
+ data_(data),
288
+ precision_(type->As<DateTime64Type>()->GetPrecision())
289
+ {}
290
+
291
+ void ColumnDateTime64::Append(const Int64& value) {
292
+ // TODO: we need a type, which safely represents datetime.
293
+ // The precision of Poco.DateTime is not big enough.
294
+ data_->Append(value);
295
+ }
296
+
297
+ //void ColumnDateTime64::Append(const std::string& value) {
298
+ // data_->Append(value);
299
+ //}
300
+
301
+ Int64 ColumnDateTime64::At(size_t n) const {
302
+ // make sure to use Absl's Int128 conversion
303
+ return static_cast<Int64>(data_->At(n));
304
+ }
305
+
306
+ std::string ColumnDateTime64::Timezone() const {
307
+ return type_->As<DateTime64Type>()->Timezone();
308
+ }
309
+
310
+ void ColumnDateTime64::Reserve(size_t new_cap)
311
+ {
312
+ data_->Reserve(new_cap);
313
+ }
314
+
315
+ void ColumnDateTime64::Append(ColumnRef column) {
316
+ if (auto col = column->As<ColumnDateTime64>()) {
317
+ data_->Append(col->data_);
318
+ }
319
+ }
320
+
321
+ bool ColumnDateTime64::LoadBody(InputStream* input, size_t rows) {
322
+ return data_->LoadBody(input, rows);
323
+ }
324
+
325
+ void ColumnDateTime64::SaveBody(OutputStream* output) {
326
+ data_->SaveBody(output);
327
+ }
328
+
329
+ void ColumnDateTime64::Clear() {
330
+ data_->Clear();
331
+ }
332
+
333
+ size_t ColumnDateTime64::Size() const {
334
+ return data_->Size();
335
+ }
336
+
337
+ ItemView ColumnDateTime64::GetItem(size_t index) const {
338
+ return ItemView(Type::DateTime64, data_->GetItem(index));
339
+ }
340
+
341
+ void ColumnDateTime64::Swap(Column& other) {
342
+ auto& col = dynamic_cast<ColumnDateTime64&>(other);
343
+ if (col.GetPrecision() != GetPrecision()) {
344
+ throw ValidationError("Can't swap DateTime64 columns when precisions are not the same: "
345
+ + std::to_string(GetPrecision()) + "(this) != " + std::to_string(col.GetPrecision()) + "(that)");
346
+ }
347
+
348
+ data_.swap(col.data_);
349
+ }
350
+
351
+ ColumnRef ColumnDateTime64::Slice(size_t begin, size_t len) const {
352
+ auto sliced_data = data_->Slice(begin, len)->As<ColumnDecimal>();
353
+
354
+ return ColumnRef{new ColumnDateTime64(type_, sliced_data)};
355
+ }
356
+
357
+ ColumnRef ColumnDateTime64::CloneEmpty() const {
358
+ return ColumnRef{new ColumnDateTime64(type_, data_->CloneEmpty()->As<ColumnDecimal>())};
359
+ }
360
+
361
+ size_t ColumnDateTime64::GetPrecision() const {
362
+ return precision_;
363
+ }
364
+
365
+ }
@@ -0,0 +1,245 @@
1
+ #pragma once
2
+
3
+ #include "decimal.h"
4
+ #include "numeric.h"
5
+
6
+ #include <ctime>
7
+
8
+ namespace clickhouse {
9
+
10
+ /** */
11
+ class ColumnDate : public Column {
12
+ public:
13
+ using ValueType = std::time_t;
14
+
15
+ ColumnDate();
16
+ explicit ColumnDate(std::vector<uint16_t>&& data);
17
+
18
+ /// Appends one element to the end of column.
19
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
20
+ void Append(const std::time_t& value);
21
+
22
+ /// Returns element at given row number.
23
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
24
+ std::time_t At(size_t n) const;
25
+ inline std::time_t operator [] (size_t n) const { return At(n); }
26
+
27
+ /// Do append data as is -- number of day in Unix epoch, no conversions performed.
28
+ void AppendRaw(uint16_t value);
29
+ uint16_t RawAt(size_t n) const;
30
+
31
+ /// Appends content of given column to the end of current one.
32
+ void Append(ColumnRef column) override;
33
+
34
+ /// Get Raw Vector Contents
35
+ std::vector<uint16_t>& GetWritableData();
36
+
37
+ /// Increase the capacity of the column for large block insertion.
38
+ void Reserve(size_t new_cap) override;
39
+
40
+ /// Returns the capacity of the column
41
+ size_t Capacity() const;
42
+
43
+ /// Loads column data from input stream.
44
+ bool LoadBody(InputStream* input, size_t rows) override;
45
+
46
+ /// Saves column data to output stream.
47
+ void SaveBody(OutputStream* output) override;
48
+
49
+ /// Clear column data .
50
+ void Clear() override;
51
+
52
+ /// Returns count of rows in the column.
53
+ size_t Size() const override;
54
+
55
+ /// Makes slice of the current column.
56
+ ColumnRef Slice(size_t begin, size_t len) const override;
57
+ ColumnRef CloneEmpty() const override;
58
+ void Swap(Column& other) override;
59
+
60
+ ItemView GetItem(size_t index) const override;
61
+
62
+ private:
63
+ std::shared_ptr<ColumnUInt16> data_;
64
+ };
65
+
66
+
67
+ class ColumnDate32 : public Column {
68
+ public:
69
+ using ValueType = std::time_t;
70
+
71
+ ColumnDate32();
72
+ explicit ColumnDate32(std::vector<int32_t>&& data);
73
+
74
+ /// Appends one element to the end of column.
75
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
76
+ void Append(const std::time_t& value);
77
+
78
+ /// Returns element at given row number.
79
+ /// The implementation is fundamentally wrong, ignores timezones, leap years and daylight saving.
80
+ std::time_t At(size_t n) const;
81
+
82
+ inline std::time_t operator [] (size_t n) const { return At(n); }
83
+
84
+ /// Do append data as is -- number of day in Unix epoch (32bit signed), no conversions performed.
85
+ void AppendRaw(int32_t value);
86
+ int32_t RawAt(size_t n) const;
87
+
88
+ /// Get Raw Vector Contents
89
+ std::vector<int32_t>& GetWritableData();
90
+
91
+ /// Returns the capacity of the column
92
+ size_t Capacity() const;
93
+
94
+ public:
95
+ /// Increase the capacity of the column for large block insertion.
96
+ void Reserve(size_t new_cap) override;
97
+
98
+ /// Appends content of given column to the end of current one.
99
+ void Append(ColumnRef column) override;
100
+
101
+ /// Loads column data from input stream.
102
+ bool LoadBody(InputStream* input, size_t rows) override;
103
+
104
+ /// Saves column data to output stream.
105
+ void SaveBody(OutputStream* output) override;
106
+
107
+ /// Clear column data .
108
+ void Clear() override;
109
+
110
+ /// Returns count of rows in the column.
111
+ size_t Size() const override;
112
+
113
+ /// Makes slice of the current column.
114
+ ColumnRef Slice(size_t begin, size_t len) const override;
115
+ ColumnRef CloneEmpty() const override;
116
+ void Swap(Column& other) override;
117
+
118
+ ItemView GetItem(size_t index) const override;
119
+
120
+ private:
121
+ std::shared_ptr<ColumnInt32> data_;
122
+ };
123
+
124
+
125
+ /** DateTime64 supports date-time values (number of seconds since UNIX epoch), from 1970 up to 2130. */
126
+ class ColumnDateTime : public Column {
127
+ public:
128
+ using ValueType = std::time_t;
129
+
130
+ ColumnDateTime();
131
+ explicit ColumnDateTime(std::vector<uint32_t>&& data);
132
+
133
+ explicit ColumnDateTime(std::string timezone);
134
+ ColumnDateTime(std::string timezone, std::vector<uint32_t>&& data);
135
+
136
+ /// Appends one element to the end of column.
137
+ void Append(const std::time_t& value);
138
+
139
+ /// Returns element at given row number.
140
+ std::time_t At(size_t n) const;
141
+ inline std::time_t operator [] (size_t n) const { return At(n); }
142
+
143
+ /// Append raw as UNIX epoch seconds in uint32
144
+ void AppendRaw(uint32_t value);
145
+ uint32_t RawAt(size_t n) const;
146
+
147
+ /// Timezone associated with a data column.
148
+ std::string Timezone() const;
149
+
150
+ /// Get Raw Vector Contents
151
+ std::vector<uint32_t>& GetWritableData();
152
+
153
+ /// Returns the capacity of the column
154
+ size_t Capacity() const;
155
+
156
+ public:
157
+ /// Increase the capacity of the column for large block insertion.
158
+ void Reserve(size_t new_cap) override;
159
+
160
+ /// Appends content of given column to the end of current one.
161
+ void Append(ColumnRef column) override;
162
+
163
+ /// Loads column data from input stream.
164
+ bool LoadBody(InputStream* input, size_t rows) override;
165
+
166
+ /// Clear column data .
167
+ void Clear() override;
168
+
169
+ /// Saves column data to output stream.
170
+ void SaveBody(OutputStream* output) override;
171
+
172
+ /// Returns count of rows in the column.
173
+ size_t Size() const override;
174
+
175
+ /// Makes slice of the current column.
176
+ ColumnRef Slice(size_t begin, size_t len) const override;
177
+ ColumnRef CloneEmpty() const override;
178
+ void Swap(Column& other) override;
179
+
180
+ ItemView GetItem(size_t index) const override;
181
+
182
+ private:
183
+ std::shared_ptr<ColumnUInt32> data_;
184
+ };
185
+
186
+
187
+ /** DateTime64 supports date-time values of arbitrary sub-second precision, from 1900 up to 2300. */
188
+ class ColumnDateTime64 : public Column {
189
+ public:
190
+ using ValueType = Int64;
191
+
192
+ explicit ColumnDateTime64(size_t precision);
193
+ ColumnDateTime64(size_t precision, std::string timezone);
194
+
195
+ /// Appends one element to the end of column.
196
+ void Append(const Int64& value);
197
+ // It is a bit controversial: users might expect it to parse string of ISO8601 or some other human-friendly format,
198
+ // but current implementation parses it as fractional integer with decimal point, e.g. "123.456".
199
+ // void Append(const std::string& value);
200
+
201
+ /// Returns element at given row number.
202
+ Int64 At(size_t n) const;
203
+
204
+ inline Int64 operator[](size_t n) const { return At(n); }
205
+
206
+ /// Timezone associated with a data column.
207
+ std::string Timezone() const;
208
+
209
+ public:
210
+ /// Increase the capacity of the column for large block insertion.
211
+ void Reserve(size_t new_cap) override;
212
+
213
+ /// Appends content of given column to the end of current one.
214
+ void Append(ColumnRef column) override;
215
+
216
+ /// Loads column data from input stream.
217
+ bool LoadBody(InputStream* input, size_t rows) override;
218
+
219
+ /// Clear column data .
220
+ void Clear() override;
221
+
222
+ /// Saves column data to output stream.
223
+ void SaveBody(OutputStream* output) override;
224
+
225
+ /// Returns count of rows in the column.
226
+ size_t Size() const override;
227
+
228
+ /// Makes slice of the current column.
229
+ ColumnRef Slice(size_t begin, size_t len) const override;
230
+ ColumnRef CloneEmpty() const override;
231
+ void Swap(Column& other) override;
232
+
233
+ ItemView GetItem(size_t index) const override;
234
+
235
+ size_t GetPrecision() const;
236
+
237
+ private:
238
+ ColumnDateTime64(TypeRef type, std::shared_ptr<ColumnDecimal> data);
239
+
240
+ private:
241
+ std::shared_ptr<ColumnDecimal> data_;
242
+ const size_t precision_;
243
+ };
244
+
245
+ }