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,177 @@
1
+ #include <assert.h>
2
+ #include "wire_format.h"
3
+
4
+ #include "input.h"
5
+ #include "output.h"
6
+
7
+ #include "../exceptions.h"
8
+
9
+ #include <stdexcept>
10
+ #include <algorithm>
11
+
12
+ namespace {
13
+ constexpr int MAX_VARINT_BYTES = 10;
14
+ }
15
+
16
+ namespace clickhouse {
17
+
18
+ bool WireFormat::ReadAll(InputStream& input, void* buf, size_t len) {
19
+ uint8_t* p = static_cast<uint8_t*>(buf);
20
+
21
+ size_t read_previously = 1; // 1 to execute loop at least once
22
+ while (len > 0 && read_previously) {
23
+ read_previously = input.Read(p, len);
24
+
25
+ p += read_previously;
26
+ len -= read_previously;
27
+ }
28
+
29
+ return !len;
30
+ }
31
+
32
+ void WireFormat::WriteAll(OutputStream& output, const void* buf, size_t len) {
33
+ const size_t original_len = len;
34
+ const uint8_t* p = static_cast<const uint8_t*>(buf);
35
+
36
+ size_t written_previously = 1; // 1 to execute loop at least once
37
+ while (len > 0 && written_previously) {
38
+ written_previously = output.Write(p, len);
39
+
40
+ p += written_previously;
41
+ len -= written_previously;
42
+ }
43
+
44
+ if (len) {
45
+ throw ProtocolError("Failed to write " + std::to_string(original_len)
46
+ + " bytes, only written " + std::to_string(original_len - len));
47
+ }
48
+ }
49
+
50
+ bool WireFormat::ReadVarint64(InputStream& input, uint64_t* value) {
51
+ *value = 0;
52
+
53
+ for (size_t i = 0; i < MAX_VARINT_BYTES; ++i) {
54
+ uint8_t byte = 0;
55
+
56
+ if (!input.ReadByte(&byte)) {
57
+ return false;
58
+ } else {
59
+ *value |= uint64_t(byte & 0x7F) << (7 * i);
60
+
61
+ if (!(byte & 0x80)) {
62
+ return true;
63
+ }
64
+ }
65
+ }
66
+
67
+ // TODO skip invalid
68
+ return false;
69
+ }
70
+
71
+ void WireFormat::WriteVarint64(OutputStream& output, uint64_t value) {
72
+ uint8_t bytes[MAX_VARINT_BYTES];
73
+ int size = 0;
74
+
75
+ for (size_t i = 0; i < MAX_VARINT_BYTES; ++i) {
76
+ uint8_t byte = value & 0x7F;
77
+ if (value > 0x7F)
78
+ byte |= 0x80;
79
+
80
+ bytes[size++] = byte;
81
+
82
+ value >>= 7;
83
+ if (!value) {
84
+ break;
85
+ }
86
+ }
87
+
88
+ WriteAll(output, bytes, size);
89
+ }
90
+
91
+ bool WireFormat::SkipString(InputStream& input) {
92
+ uint64_t len = 0;
93
+
94
+ if (ReadVarint64(input, &len)) {
95
+ if (len > 0x00FFFFFFULL)
96
+ return false;
97
+
98
+ return input.Skip((size_t)len);
99
+ }
100
+
101
+ return false;
102
+ }
103
+
104
+ inline const char* find_quoted_chars(const char* start, const char* end)
105
+ {
106
+ static constexpr char quoted_chars[] = {'\0', '\b', '\t', '\n', '\'', '\\'};
107
+ const auto first = std::find_first_of(start, end, std::begin(quoted_chars), std::end(quoted_chars));
108
+
109
+ return (first == end) ? nullptr : first;
110
+ }
111
+
112
+ void WireFormat::WriteQuotedString(OutputStream& output, std::string_view value) {
113
+ auto size = value.size();
114
+ const char* start = value.data();
115
+ const char* end = start + size;
116
+ const char* quoted_char = find_quoted_chars(start, end);
117
+ if (quoted_char == nullptr) {
118
+ WriteVarint64(output, size + 2);
119
+ WriteAll(output, "'", 1);
120
+ WriteAll(output, start, size);
121
+ WriteAll(output, "'", 1);
122
+ return;
123
+ }
124
+
125
+ // calculate quoted chars count
126
+ int quoted_count = 1;
127
+ const char* next_quoted_char = quoted_char + 1;
128
+ while ((next_quoted_char = find_quoted_chars(next_quoted_char, end))) {
129
+ quoted_count++;
130
+ next_quoted_char++;
131
+ }
132
+ WriteVarint64(output, size + 2 + 3 * quoted_count); // length
133
+
134
+ WriteAll(output, "'", 1);
135
+
136
+ do {
137
+ auto write_size = quoted_char - start;
138
+ WriteAll(output, start, write_size);
139
+ WriteAll(output, "\\", 1);
140
+ char c = quoted_char[0];
141
+ switch (c) {
142
+ case '\0':
143
+ WriteAll(output, "x00", 3);
144
+ break;
145
+ case '\b':
146
+ WriteAll(output, "x08", 3);
147
+ break;
148
+ case '\t':
149
+ WriteAll(output, R"(\\t)", 3);
150
+ break;
151
+ case '\n':
152
+ WriteAll(output, R"(\\n)", 3);
153
+ break;
154
+ case '\'':
155
+ WriteAll(output, "x27", 3);
156
+ break;
157
+ case '\\':
158
+ WriteAll(output, R"(\\\)", 3);
159
+ break;
160
+ default:
161
+ break;
162
+ }
163
+ start = quoted_char + 1;
164
+ quoted_char = find_quoted_chars(start, end);
165
+ } while (quoted_char);
166
+
167
+ WriteAll(output, start, end - start);
168
+ WriteAll(output, "'", 1);
169
+ }
170
+
171
+ void WireFormat::WriteParamNullRepresentation(OutputStream& output) {
172
+ const std::string NULL_REPRESENTATION(R"('\\N')");
173
+ WriteVarint64(output, NULL_REPRESENTATION.size());
174
+ WriteAll(output, NULL_REPRESENTATION.data(), NULL_REPRESENTATION.size());
175
+ }
176
+
177
+ } // namespace clickhouse
@@ -0,0 +1,79 @@
1
+ #pragma once
2
+
3
+ #include <string>
4
+ #include <cstdint>
5
+
6
+ namespace clickhouse {
7
+
8
+ class InputStream;
9
+ class OutputStream;
10
+
11
+ class WireFormat {
12
+ public:
13
+ template <typename T>
14
+ static bool ReadFixed(InputStream& input, T* value);
15
+ static bool ReadString(InputStream& input, std::string* value);
16
+ static bool SkipString(InputStream& input);
17
+ static bool ReadBytes(InputStream& input, void* buf, size_t len);
18
+ static bool ReadUInt64(InputStream& input, uint64_t* value);
19
+ static bool ReadVarint64(InputStream& output, uint64_t* value);
20
+
21
+ template <typename T>
22
+ static void WriteFixed(OutputStream& output, const T& value);
23
+ static void WriteBytes(OutputStream& output, const void* buf, size_t len);
24
+ static void WriteString(OutputStream& output, std::string_view value);
25
+ static void WriteQuotedString(OutputStream& output, std::string_view value);
26
+ static void WriteParamNullRepresentation(OutputStream& output);
27
+ static void WriteUInt64(OutputStream& output, const uint64_t value);
28
+ static void WriteVarint64(OutputStream& output, uint64_t value);
29
+
30
+ private:
31
+ static bool ReadAll(InputStream& input, void* buf, size_t len);
32
+ static void WriteAll(OutputStream& output, const void* buf, size_t len);
33
+ };
34
+
35
+ template <typename T>
36
+ inline bool WireFormat::ReadFixed(InputStream& input, T* value) {
37
+ return ReadAll(input, value, sizeof(T));
38
+ }
39
+
40
+ inline bool WireFormat::ReadString(InputStream& input, std::string* value) {
41
+ uint64_t len = 0;
42
+ if (ReadVarint64(input, &len)) {
43
+ if (len > 0x00FFFFFFULL) {
44
+ return false;
45
+ }
46
+ value->resize((size_t)len);
47
+ return ReadAll(input, value->data(), (size_t)len);
48
+ }
49
+
50
+ return false;
51
+ }
52
+
53
+ inline bool WireFormat::ReadBytes(InputStream& input, void* buf, size_t len) {
54
+ return ReadAll(input, buf, len);
55
+ }
56
+
57
+ inline bool WireFormat::ReadUInt64(InputStream& input, uint64_t* value) {
58
+ return ReadVarint64(input, value);
59
+ }
60
+
61
+ template <typename T>
62
+ inline void WireFormat::WriteFixed(OutputStream& output, const T& value) {
63
+ WriteAll(output, &value, sizeof(T));
64
+ }
65
+
66
+ inline void WireFormat::WriteBytes(OutputStream& output, const void* buf, size_t len) {
67
+ WriteAll(output, buf, len);
68
+ }
69
+
70
+ inline void WireFormat::WriteString(OutputStream& output, std::string_view value) {
71
+ WriteVarint64(output, value.size());
72
+ WriteAll(output, value.data(), value.size());
73
+ }
74
+
75
+ inline void WireFormat::WriteUInt64(OutputStream& output, const uint64_t value) {
76
+ WriteVarint64(output, value);
77
+ }
78
+
79
+ }
@@ -0,0 +1,134 @@
1
+ #include "block.h"
2
+
3
+ #include "exceptions.h"
4
+
5
+ #include <stdexcept>
6
+
7
+ namespace clickhouse {
8
+
9
+ Block::Iterator::Iterator(const Block& block)
10
+ : block_(block)
11
+ , idx_(0)
12
+ {
13
+ }
14
+
15
+ Block::Iterator::Iterator(const Block& block, Block::Iterator::ConstructAtEndTag /*at_end*/)
16
+ : block_(block)
17
+ , idx_(block.GetColumnCount())
18
+ {}
19
+
20
+ const std::string& Block::Iterator::Name() const {
21
+ return block_.columns_[idx_].name;
22
+ }
23
+
24
+ TypeRef Block::Iterator::Type() const {
25
+ return block_.columns_[idx_].column->Type();
26
+ }
27
+
28
+ ColumnRef Block::Iterator::Column() const {
29
+ return block_.columns_[idx_].column;
30
+ }
31
+
32
+ bool Block::Iterator::Next() {
33
+ ++idx_;
34
+ return IsValid();
35
+ }
36
+
37
+ bool Block::Iterator::IsValid() const {
38
+ return idx_ < block_.columns_.size();
39
+ }
40
+
41
+
42
+ Block::Block()
43
+ : rows_(0)
44
+ {
45
+ }
46
+
47
+ Block::Block(size_t cols, size_t rows)
48
+ : rows_(rows)
49
+ {
50
+ columns_.reserve(cols);
51
+ }
52
+
53
+ Block::~Block() = default;
54
+
55
+ void Block::AppendColumn(const std::string& name, const ColumnRef& col) {
56
+ if (columns_.empty()) {
57
+ rows_ = col->Size();
58
+ } else if (col->Size() != rows_) {
59
+ throw ValidationError("all columns in block must have same count of rows. Name: ["+name+"], rows: ["+std::to_string(rows_)+"], columns: [" + std::to_string(col->Size())+"]");
60
+ }
61
+
62
+ columns_.push_back(ColumnItem{name, col});
63
+ }
64
+
65
+ /// Count of columns in the block.
66
+ size_t Block::GetColumnCount() const {
67
+ return columns_.size();
68
+ }
69
+
70
+ const BlockInfo& Block::Info() const {
71
+ return info_;
72
+ }
73
+
74
+ /// Set block info
75
+ void Block::SetInfo(BlockInfo info) {
76
+ info_ = std::move(info);
77
+ }
78
+
79
+ /// Count of rows in the block.
80
+ size_t Block::GetRowCount() const {
81
+ return rows_;
82
+ }
83
+
84
+ size_t Block::RefreshRowCount() {
85
+ size_t rows = 0UL;
86
+
87
+ for (size_t idx = 0UL; idx < columns_.size(); ++idx)
88
+ {
89
+ const std::string& name = columns_[idx].name;
90
+ const ColumnRef& col = columns_[idx].column;
91
+
92
+ if (idx == 0UL)
93
+ rows = col->Size();
94
+ else if (rows != col->Size())
95
+ throw ValidationError("all columns in block must have same count of rows. Name: ["+name+"], rows: ["+std::to_string(rows)+"], columns: [" + std::to_string(col->Size())+"]");
96
+ }
97
+
98
+ rows_ = rows;
99
+ return rows_;
100
+ }
101
+
102
+ void Block::Clear() {
103
+ for (auto & c : columns_) {
104
+ c.column->Clear();
105
+ }
106
+
107
+ RefreshRowCount();
108
+ }
109
+
110
+ void Block::Reserve(size_t new_cap) {
111
+ for (auto & c : columns_) {
112
+ c.column->Reserve(new_cap);
113
+ }
114
+ }
115
+
116
+
117
+
118
+ ColumnRef Block::operator [] (size_t idx) const {
119
+ if (idx < columns_.size()) {
120
+ return columns_[idx].column;
121
+ }
122
+
123
+ throw std::out_of_range("column index is out of range. Index: ["+std::to_string(idx)+"], columns: [" + std::to_string(columns_.size())+"]");
124
+ }
125
+
126
+ Block::Iterator Block::begin() const {
127
+ return Iterator(*this);
128
+ }
129
+
130
+ Block::Iterator Block::end() const {
131
+ return Iterator(*this, Iterator::ConstructAtEndTag{});
132
+ }
133
+
134
+ }
@@ -0,0 +1,114 @@
1
+ #pragma once
2
+
3
+ #include "columns/column.h"
4
+
5
+ namespace clickhouse {
6
+
7
+ struct BlockInfo {
8
+ uint8_t is_overflows = 0;
9
+ int32_t bucket_num = -1;
10
+ };
11
+
12
+ class Block {
13
+ public:
14
+ /// Allow to iterate over block's columns.
15
+ class Iterator {
16
+ public:
17
+ Iterator(const Block& block);
18
+
19
+ /// Name of column.
20
+ const std::string& Name() const;
21
+
22
+ /// Type of column.
23
+ TypeRef Type() const;
24
+
25
+ /// Reference to column object.
26
+ ColumnRef Column() const;
27
+
28
+ /// Move to next column, returns false if next call to IsValid() would return false;
29
+ bool Next();
30
+
31
+ /// Is the iterator still valid.
32
+ bool IsValid() const;
33
+
34
+ size_t ColumnIndex() const {
35
+ return idx_;
36
+ }
37
+
38
+ Iterator& operator*() { return *this; }
39
+ const Iterator& operator*() const { return *this; }
40
+
41
+ bool operator==(const Iterator & other) const {
42
+ return &block_ == &other.block_ && idx_ == other.idx_;
43
+ }
44
+ bool operator!=(const Iterator & other) const {
45
+ return !(*this == other);
46
+ }
47
+
48
+ Iterator& operator++() {
49
+ this->Next();
50
+ return *this;
51
+ }
52
+
53
+ private:
54
+ friend class Block;
55
+ struct ConstructAtEndTag {};
56
+ Iterator(const Block& block, ConstructAtEndTag at_end);
57
+ Iterator() = delete;
58
+
59
+ const Block& block_;
60
+ size_t idx_;
61
+ };
62
+
63
+ public:
64
+ Block();
65
+ Block(size_t cols, size_t rows);
66
+ ~Block();
67
+
68
+ /// Append named column to the block.
69
+ void AppendColumn(const std::string& name, const ColumnRef& col);
70
+
71
+ /// Count of columns in the block.
72
+ size_t GetColumnCount() const;
73
+
74
+ const BlockInfo& Info() const;
75
+
76
+ /// Set block info
77
+ void SetInfo(BlockInfo info);
78
+
79
+ /// Count of rows in the block.
80
+ size_t GetRowCount() const;
81
+
82
+ size_t RefreshRowCount();
83
+
84
+ const std::string& GetColumnName(size_t idx) const {
85
+ return columns_.at(idx).name;
86
+ }
87
+
88
+ /// Convenience method to wipe out all rows from all columns
89
+ void Clear();
90
+
91
+ /// Convenience method to do Reserve() on all columns
92
+ void Reserve(size_t new_cap);
93
+
94
+ /// Reference to column by index in the block.
95
+ ColumnRef operator [] (size_t idx) const;
96
+
97
+ Iterator begin() const;
98
+ Iterator end() const;
99
+ Iterator cbegin() const { return begin(); }
100
+ Iterator cend() const { return end(); }
101
+
102
+ private:
103
+ struct ColumnItem {
104
+ std::string name;
105
+ ColumnRef column;
106
+ };
107
+
108
+ BlockInfo info_;
109
+ std::vector<ColumnItem> columns_;
110
+ /// Count of rows in the block.
111
+ size_t rows_;
112
+ };
113
+
114
+ }