Initialize TsFile extras documentation
diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..1c4971b --- /dev/null +++ b/.editorconfig
@@ -0,0 +1,35 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false + +[*.py] +indent_size = 4 + +[Makefile] +indent_style = tab
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b98686e --- /dev/null +++ b/.gitignore
@@ -0,0 +1,74 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# OS and editor state +.DS_Store +Thumbs.db +.idea/ +.vscode/ +*.iml +*.swp +*.swo +*~ + +# Local credentials and developer-only installations +.env +.env.* +!.env.example +!.env.*.example +.local/ +/downloads/ +/artifacts/ + +# Out-of-tree builds and generated distribution output +build/ +build-*/ +cmake-build-*/ +CMakeFiles/ +CMakeCache.txt +cmake_install.cmake +CTestTestfile.cmake +Testing/ +compile_commands.json +dist/ +target/ + +# Compiled native artifacts +*.o +*.obj +*.a +*.lib +*.so +*.so.* +*.dylib +*.dll +*.exe +*.pdb +*.duckdb_extension + +# Python helper environments and caches +.venv/ +venv/ +__pycache__/ +*.py[cod] +.pytest_cache/ + +# Runtime logs (keep generated datasets inside ignored build directories) +*.log + +# Intentionally do not blanket-ignore *.tsfile, *.db, or *.sqlite: +# documented fixtures may be tracked.
diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..cad4068 --- /dev/null +++ b/AGENTS.md
@@ -0,0 +1,70 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Repository guidance + +## Purpose + +Apache TsFile Extras maintains integrations between TsFile and external systems. +Read `README.md`, `docs/architecture.md`, and the affected module's README before +making changes. Keep `README.md` and `README-zh.md` consistent. + +## Module boundaries + +- Organize integrations by external system: `sqlite/` and `duckdb/`. +- Keep module-specific code, builds, tests, examples, and guides together. +- Use the installed TsFile SDK. CMake consumers use + `find_package(TsFile CONFIG REQUIRED)` and `TsFile::tsfile`; pkg-config uses + `libtsfile`. Respect the integration's shared or static linkage requirements. +- Do not vendor TsFile core sources, require a sibling checkout, or introduce a + default network fetch. A locally built SDK must be installed into a prefix. +- Do not treat every installed header as a stable public API. Document any + dependency on internal interfaces. +- Do not add CI, root aggregate builds, dependency installers, or publication + automation unless requested. Do not change external registry entries as + incidental cleanup. + +## Documentation + +Describe the repository's purpose and the integrations' functionality directly. +Keep project descriptions free of task status, scaffolding notes, migration +checklists, and setup history. Link to source and usage guides without implying +that external code is present locally. Do not claim unverified compatibility. + +Do not embed machine-specific paths or private documents in public instructions. +Use public references and configurable SDK prefixes. + +## Validation + +Check local links, whitespace, license headers, and ignore rules for documentation +changes. For implementation changes, use the module's documented build and test +commands and report what was actually run. + +Do not commit binaries, SDK packages, secrets, or large datasets. Do not +blanket-ignore intentional `.tsfile` or database fixtures. + +## License and Git + +Use Apache License 2.0 headers on source, configuration, and Markdown files. Keep +`LICENSE` and `NOTICE` in their standard standalone formats and preserve +attribution for imported material. + +Do not add a `Co-Authored-By` trailer. Do not commit or push unless requested.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ddda7b5 --- /dev/null +++ b/CONTRIBUTING.md
@@ -0,0 +1,63 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Contributing + +Keep changes focused on the affected integration. Read its documentation and the +[SDK dependency requirements](docs/dependencies.md) before changing the build or +adding dependencies. + +## Code and documentation + +- Keep implementation, tests, examples, and usage documentation in the module for + the external system. +- Use an installed TsFile SDK rather than a copy of the core source tree. +- Follow the integration's build and formatting conventions. Record the commands + run, dependency versions, and test results with a change. +- Keep the English and Chinese root READMEs consistent. Document supported + behavior and limitations without overstating compatibility. +- When adding an integration, follow [Adding an integration](docs/adding-integration.md). + +## Importing code + +Record the source repository and exact commit. Preserve attribution and relevant +history, documentation, and tests. Review the license and notice requirements of +the files being imported; do not copy notices for unrelated components. + +Replace dependencies on the TsFile source-tree layout with the installed SDK +interface. Document any remaining use of internal APIs. Keep changes to external +distribution systems, such as the DuckDB community registry, separate from source +imports. + +## Files and formatting + +Use UTF-8, LF line endings, and a final newline. Follow `.editorconfig`. + +New source, configuration, and Markdown files require the Apache License 2.0 +header in the appropriate comment syntax. Keep `LICENSE` and `NOTICE` in their +standard standalone formats and preserve third-party attribution. + +Do not commit SDK installations, build outputs, credentials, or large generated +datasets. Small test fixtures may be included with their provenance and purpose. + +## Commits + +Use focused commits describing the change. Do not add a `Co-Authored-By` trailer.
diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE
@@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.
diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..ca4b84f --- /dev/null +++ b/NOTICE
@@ -0,0 +1,5 @@ +Apache TsFile Extras +Copyright 2026 The Apache Software Foundation. + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/).
diff --git a/README-zh.md b/README-zh.md new file mode 100644 index 0000000..f521c04 --- /dev/null +++ b/README-zh.md
@@ -0,0 +1,45 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Apache TsFile Extras + +[English](README.md) + +Apache TsFile Extras 用于维护 [Apache TsFile](https://github.com/apache/tsfile) +与外部系统的集成方案,包括适配代码、使用文档和示例。 +通过这些集成,应用可以在其他系统中读写 TsFile,并结合各系统的存储和查询能力使用时序数据。 + +## 集成 + +| 系统 | 功能 | +| --- | --- | +| [SQLite](sqlite/README.md) | 使用 SQLite 管理可修改的数据,使用 TsFile 压缩存储历史数据,通过同一逻辑表进行 SQL 查询。 | +| [DuckDB](duckdb/README.md) | 使用 DuckDB SQL 查询 TsFile,并将查询结果导出为 TsFile。 | + +## 开发 + +各集成按外部系统组织,复用已安装的 TsFile SDK。 +构建要求和使用方法见对应集成的文档;SDK 配置方式见 +[依赖说明](docs/dependencies.md),贡献要求见 [贡献指南](CONTRIBUTING.md)。 + +## 许可证 + +本项目采用 [Apache License 2.0](LICENSE),归属说明见 [NOTICE](NOTICE)。
diff --git a/README.md b/README.md new file mode 100644 index 0000000..f1b1677 --- /dev/null +++ b/README.md
@@ -0,0 +1,48 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Apache TsFile Extras + +[中文](README-zh.md) + +Apache TsFile Extras brings together integrations between +[Apache TsFile](https://github.com/apache/tsfile) and external systems, including +adapters, usage guides, and examples. These integrations let applications read +and write TsFile through other systems and combine TsFile with their storage +and query capabilities. + +## Integrations + +| Integration | Description | +| --- | --- | +| [SQLite](sqlite/README.md) | Combine SQLite's mutable data with compressed historical data in TsFile, with SQL access through a single logical table. | +| [DuckDB](duckdb/README.md) | Query TsFile with DuckDB SQL and export query results to TsFile. | + +## Development + +Integrations are organized by external system and use the installed TsFile SDK. +Build requirements and usage instructions are documented by each integration. +See [SDK dependencies](docs/dependencies.md) for SDK configuration and +[CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines. + +## License + +[Apache License, Version 2.0](LICENSE). See [NOTICE](NOTICE) for attribution.
diff --git a/docs/adding-integration.md b/docs/adding-integration.md new file mode 100644 index 0000000..788b7c5 --- /dev/null +++ b/docs/adding-integration.md
@@ -0,0 +1,60 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Adding an integration + +Create a top-level directory named after the external system, using a concise +lowercase name. Keep code for the same integration together even when it uses +more than one programming language. + +## Documentation + +The module README should describe: + +- What the integration does and its main use cases. +- Prerequisites, installation, and build instructions. +- A minimal usage example and links to detailed documentation. +- Supported versions and platforms, with known limitations. +- Source code and instructions for running tests. + +Link to external implementations and guides where appropriate. Add the module to +both root READMEs. Write for users and contributors; keep setup history and task +progress out of project descriptions. + +## Implementation + +Keep source, tests, examples, and documentation within the module. Preserve a +useful upstream layout rather than imposing a common directory structure on +unrelated build systems. Add directories and build files with the content they +support. + +Use the [installed TsFile SDK](dependencies.md). Document host-specific linkage +and runtime deployment requirements. General-purpose TsFile functionality belongs +in the core project. + +## Source and test data + +When importing code, record the original repository and commit, and preserve its +license and attribution. Include relevant tests and documentation. + +Prefer small generated examples or documented fixtures. Do not commit SDK +archives, compiled extensions, private data, or large datasets. Small TsFile and +database fixtures may be tracked when needed by tests.
diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..ed9b1d7 --- /dev/null +++ b/docs/architecture.md
@@ -0,0 +1,60 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Architecture + +TsFile Extras organizes integrations by external system. Each module owns its +adapter, build configuration, documentation, examples, and tests. + +## Project boundaries + +TsFile core owns the file format, encoding, compression, general-purpose APIs, +and SDK packaging. Extras owns the code that connects those APIs to external +systems. General-purpose changes belong in the core project rather than a +private copy of TsFile inside an integration. + +## Modules + +- **SQLite:** the SQLite extension, including logical tables, sealing, and export. +- **DuckDB:** the DuckDB extension, SQL interface, and host-specific packaging. + +Modules have independent build requirements. Working on one integration should +not require installing the other systems. Shared build helpers should be added +only when multiple modules need them. + +## Dependencies + +Integrations consume an installed TsFile SDK, including SDKs built locally and +installed into a separate prefix. They must not depend on the location of a +TsFile source or build tree. See [SDK dependencies](dependencies.md). + +Static or shared linkage is selected per integration according to the host's +runtime and distribution requirements. + +## Compatibility + +Document the TsFile SDK version, host version, platform, architecture, and linkage +used for each supported configuration. A TsFile package being available for a +platform does not by itself establish compatibility with an integration. + +Keep host-specific installation and distribution requirements with the module. +Changes to external registries should be reviewed separately from changes to +adapter code.
diff --git a/docs/dependencies.md b/docs/dependencies.md new file mode 100644 index 0000000..5abc0c0 --- /dev/null +++ b/docs/dependencies.md
@@ -0,0 +1,106 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# Consuming the TsFile SDK + +## Use an installation, not a source checkout + +Native integrations should depend on an installed TsFile SDK. Use the +installation instructions for the TsFile package and platform you select. Do not +add a second TsFile installer, vendor the core library, or automatically download +and build a floating branch from an extras module. + +The established packaging contract provides a library, development headers, +CMake package configuration, and pkg-config metadata beneath an installation +prefix. The following references describe the SDK at commit `6f38c703962a`: + +- [TsFile packaging documentation](https://github.com/apache/tsfile/blob/6f38c703962ab6224b09fc299f94ad42e6af88a1/packaging/README.md) +- [Installed CMake consumer](https://github.com/apache/tsfile/blob/6f38c703962ab6224b09fc299f94ad42e6af88a1/cpp/cmake/tests/projects/InstalledConsumer/CMakeLists.txt) +- [pkg-config metadata](https://github.com/apache/tsfile/blob/6f38c703962ab6224b09fc299f94ad42e6af88a1/cpp/cmake/libtsfile.pc.in) + +## Selecting installation components + +| Installation family | Development requirements | +| --- | --- | +| APT | Runtime `tsfile` and development package `tsfile-dev`. | +| RPM | Runtime `tsfile` and development package `tsfile-devel`. | +| Homebrew | The installed Formula's prefix, including library and headers; development Formula `tsfile-dev` is keg-only. | +| Windows SDK ZIP | The extracted SDK root containing `bin`, `include`, and `lib`, matching the consumer's architecture and toolchain. | + +`tsfile-tools` supplies the CLI where packaging separates it from the library; +it is not a substitute for development headers and link files. Availability and +installation commands are owned by the TsFile package distribution. Do not infer +support for additional platforms or architectures from this table. + +## CMake and pkg-config + +CMake-based integrations should use `find_package(TsFile CONFIG REQUIRED)` and +link their actual targets to `TsFile::tsfile`. Use `CMAKE_PREFIX_PATH` to select +a non-default SDK installation, or `TsFile_DIR` for the directory containing +`TsFileConfig.cmake`. Consume the exported include paths and dependencies rather +than reconstructing them in a custom `FindTsFile.cmake`. + +For a Homebrew development installation, `brew --prefix tsfile-dev` identifies +the Formula-specific prefix. Do not hard-code `/opt/homebrew` or `/usr/local`. +On Windows, point the consumer at the extracted SDK root, not just its DLL. + +Consumers using pkg-config can query `libtsfile`; configure `PKG_CONFIG_PATH` +when the installation is outside the normal search path. Runtime library +resolution is separate from build-time package discovery and must be documented +by the integration. + +## Shared and static linkage + +Choose linkage according to the host and distribution requirements. An installed +SDK may be shared or static; an existing binary package must not be assumed to +contain both variants. Verify the selected artifact, compiler and runtime ABI, +position-independent code requirements, and transitive dependencies as relevant. + +If the required SDK variant is unavailable as a package, build and install it +into a separate prefix using the upstream instructions, then consume that prefix +normally. Do not silently switch to a network source build during configuration. + +For shared builds, deployment instructions must account for the runtime library. +For static builds, preserve the exported dependency and licensing requirements. + +## Source-based development + +To work with an unpublished core change, the developer builds and installs TsFile +into a chosen prefix outside this repository. Extras then uses that same CMake +or pkg-config interface. SDK source location and build directories are not part +of the integration contract. + +Installed headers include a compatibility closure, not only stable public entry +points. Consult the [public-header definition](https://github.com/apache/tsfile/blob/6f38c703962ab6224b09fc299f94ad42e6af88a1/cpp/cmake/TsFilePublicHeaders.cmake) +and document any dependence on implementation-level interfaces. + +## Version records + +Each implementation should record the following when it is actually exercised: + +- Exact SDK artifact version, source commit when available, and distribution. +- Host system version, operating system, architecture, and relevant toolchain. +- Shared or static linkage and important SDK build options. +- Commands run, results, and known limitations. + +Development snapshots must remain labeled as such; do not describe them as RCs +or formal releases. Pin immutable versions when reproducibility is needed rather +than relying on `latest` or a moving branch.
diff --git a/duckdb/README.md b/duckdb/README.md new file mode 100644 index 0000000..c0008d9 --- /dev/null +++ b/duckdb/README.md
@@ -0,0 +1,39 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# DuckDB integration + +The TsFile extension for DuckDB lets applications query TsFile using SQL and +write query results to TsFile. It connects TsFile storage with DuckDB's query +engine without requiring applications to call the TsFile API directly. + +## Features + +- Read TsFile data in DuckDB SQL queries. +- Export data to TsFile with `COPY`. + +## Documentation and source + +See the extension repository for installation instructions, supported versions, +and SQL examples. + +- [Source code and usage guide](https://github.com/TimechoLab/tsfile-duckdb) +- [DuckDB community extension registration](https://github.com/duckdb/community-extensions/blob/c5bcc1142fe43950a32ba43704aad12e1fab28e3/extensions/tsfile/description.yml)
diff --git a/sqlite/README.md b/sqlite/README.md new file mode 100644 index 0000000..860958d --- /dev/null +++ b/sqlite/README.md
@@ -0,0 +1,46 @@ +<!-- + +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. + +--> + +# SQLite integration + +The SQLite integration combines SQLite's transactional storage with TsFile's +compression for historical time-series data. Applications read and write through +a logical table: mutable data stays in SQLite, while sealed data is stored in +TsFile and remains queryable through the same table. + +## Features + +- Create a writable table with a declared schema, or initialize one from an + existing TsFile. +- Seal data into TsFile through SQL. Sealed rows remain readable but cannot be + updated or deleted. +- Query an existing TsFile as a read-only table. +- Export a table to an independent TsFile, including its hot data. + +## Documentation and source + +For build instructions, SQL examples, and transaction semantics, see the user +guides: + +- [English user guide](https://github.com/apache/tsfile/blob/experiment-sqlite/cpp/src/sqlite/USER_GUIDE_EN.md) +- [中文使用手册](https://github.com/apache/tsfile/blob/experiment-sqlite/cpp/src/sqlite/USER_GUIDE.md) +- [Source code](https://github.com/apache/tsfile/tree/experiment-sqlite/cpp/src/sqlite) +- [Mailing-list discussion](https://lists.apache.org/thread/62oqkfo2nmojhrhfnrb1rhhwn4vcykw6)