[Doc] PDF generation (#53499)

This commit is contained in:
Dan Roscigno 2024-12-03 18:06:54 -05:00 committed by GitHub
parent 5bad4af508
commit 8601a02a14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 1046 additions and 19 deletions

1
docs/PDFoutput/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*pdf

View File

@ -3,7 +3,7 @@ FROM node:21
WORKDIR /app/docusaurus
ENV NODE_OPTIONS="--max-old-space-size=8192"
RUN apt update && apt install -y neovim
RUN apt update && apt install -y neovim python3.11-venv ghostscript
EXPOSE 3000

8
docs/docusaurus/PDF/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
.venv
*.pdf
URLs.txt
pdf/**
combine.yaml
.DS_Store
node_modules/**

View File

@ -0,0 +1,155 @@
# Generate PDFs from the StarRocks Docusaurus documentation site
Node.js code to:
1. Generate the ordered list of URLs from the documentation. This is done using code from `docusaurus-prince-pdf`.
2. Convert each page to a PDF file with Gotenberg.
3. Combine the individual PDF files using Ghostscript and `pdfcombine`.
## Clone this repo
Clone this repo to your machine.
## Choose the branch that you want a PDF for
When you launch the PDF conversion environment, it will use the active branch. So, if you want a PDF for version 3.3:
```bash
git switch branch-3.3
```
## Launch the conversion environment
The conversion process uses Docker Compose. Launch the environment by running the following command from the `starrocks/docs/docusaurus/PDF/` directory.
```bash
cd starrocks/docs/docusaurus/PDF
docker compose up --detach --wait --wait-timeout 120 --build
```
> Tip
>
> All of the `docker compose` commands must be run from the `starrocks/docs/docusaurus/PDF/` directory.
## Check the status
> Tip
>
> If you do not have `jq` installed just run `docker compose ps`. The ouput using `jq` is easier to read, but you can get by with the more basic command.
```bash
docker compose ps --format json | jq '{Service: .Service, State: .State, Status: .Status}'
```
Expected output:
```bash
{
"Service": "docusaurus",
"State": "running",
"Status": "Up 14 minutes"
}
{
"Service": "gotenberg",
"State": "running",
"Status": "Up 2 hours (healthy)"
}
```
## Get the URL of the "home" page
### Check to see if Docusaurus is serving the pages
From the `PDF` directory check the logs of the `docusaurus` service:
```bash
docker compose logs -f docusaurus
```
When Docusaurus is ready you will see this line at the end of the log output:
```bash
docusaurus-1 | [SUCCESS] Serving "build" directory at: http://0.0.0.0:3000/
```
Stop watching the logs with CTRL-c
### Find the initial URL
First open the docs by launching a browser to the URL at the end of the log output, which should be [http://0.0.0.0:3000/](http://0.0.0.0:3000/).
Next, change to the Chinese documentation if you are generating a PDF document of the Chinese documentation.
Copy the URL of the starting page of the documentation that you would like to generate a PDF for.
Save the URL.
## Open a shell in the PDF build environment
Launch a shell from the `starrocks/docs/docusaurus/PDF` directory:
```bash
docker compose exec -ti docusaurus bash
```
and `cd` into the `PDF` directory:
```bash
cd /app/docusaurus/PDF
```
## Crawl the docs and generate the PDFs
Run the command:
> Tip
>
> The URL in the code sample is for the Chinese documentation, remove the `/zh/` if you want English.
```bash
node generatePdf.js http://0.0.0.0:3000/zh/docs/introduction/StarRocks_intro/
```
## Join the individual PDF files
> Note:
>
> There are 900+ PDF files and more than 4,000 pages in total. Combining takes five hours on my laptop, just let it run. I am looking for a faster method to combine the files.
```bash
source .venv/bin/activate
pdfcombine -y combine.yaml --title="StarRocks 3.3" -o ../../PDFoutput/StarRocks_3.3.pdf
```
> Note:
>
> You may see this message during the `pdfcombine` step:
>
> `GPL Ghostscript 10.03.1: Missing glyph CID=93, glyph=005d in the font IAAAAA+Menlo-Regular . The output PDF may fail with some viewers.`
>
> I have not had any complaints about the missing glyph from readers of the documents produced with this.
## Finished file
The individual PDF files and the combined file will be on your local machine in `starrocks/docs/PDFoutput/`
## Customizing the docs site for PDF
Gotenberg generates the PDF files without the side navigation, header, and footer as these components are not displayed when the `media` is set to `print`. In our docs it does not make sense to have the edit URLs or Feedback widget show. These are filtered out using CSS by adding `display: none` to the classes of these objects when `@media print`.
Removing the Feedback form from the PDF can be done with CSS. This snippet is added to the Docusaurus CSS file `src/css/custom.css`:
```css
/* When we generate PDF files we do not need to show the feedback widget. */
@media print {
.feedback_Ak7m {
display: none;
}
}
```
## Links
- [`docusaurus-prince-pdf`](https://github.com/signcl/docusaurus-prince-pdf)
- [`Gotenberg`](https://pptr.dev/)
- [Ghostscript](https://www.ghostscript.com/)
- [`pdfcombine`](https://github.com/tdegeus/pdfcombine.git)

View File

@ -0,0 +1,656 @@
http://localhost:3000/docs/en/quick-start
http://localhost:3000/docs/en/getting-started/example-datasets/
http://localhost:3000/docs/en/tutorial
http://localhost:3000/docs/en/getting-started/example-datasets/uk-price-paid
http://localhost:3000/docs/en/getting-started/example-datasets/nyc-taxi
http://localhost:3000/docs/en/getting-started/example-datasets/cell-towers
http://localhost:3000/docs/en/getting-started/example-datasets/amplab-benchmark
http://localhost:3000/docs/en/getting-started/example-datasets/brown-benchmark
http://localhost:3000/docs/en/getting-started/example-datasets/criteo
http://localhost:3000/docs/en/getting-started/example-datasets/github-events
http://localhost:3000/docs/en/getting-started/example-datasets/menus
http://localhost:3000/docs/en/getting-started/example-datasets/metrica
http://localhost:3000/docs/en/getting-started/example-datasets/nypd_complaint_data
http://localhost:3000/docs/en/getting-started/example-datasets/ontime
http://localhost:3000/docs/en/getting-started/example-datasets/opensky
http://localhost:3000/docs/en/getting-started/example-datasets/recipes
http://localhost:3000/docs/en/getting-started/example-datasets/star-schema
http://localhost:3000/docs/en/getting-started/example-datasets/wikistat
http://localhost:3000/docs/en/getting-started/playground
http://localhost:3000/docs/en/integrations/
http://localhost:3000/docs/en/supported-regions
http://localhost:3000/docs/en/install
http://localhost:3000/docs/en/integrations/connect-a-client
http://localhost:3000/docs/en/integrations/sql-clients/clickhouse-client-local
http://localhost:3000/docs/en/integrations/sql-clients
http://localhost:3000/docs/en/integrations/sql-clients/arctype
http://localhost:3000/docs/en/integrations/sql-clients/cli
http://localhost:3000/docs/en/integrations/sql-clients/datagrip
http://localhost:3000/docs/en/integrations/sql-clients/dbeaver
http://localhost:3000/docs/en/integrations/language-clients
http://localhost:3000/docs/en/integrations/language-clients/nodejs
http://localhost:3000/docs/en/integrations/language-clients/java/
http://localhost:3000/docs/en/integrations/go
http://localhost:3000/docs/en/integrations/go/intro
http://localhost:3000/docs/en/integrations/go/choosing-a-client
http://localhost:3000/docs/en/integrations/go/clickhouse-go
http://localhost:3000/docs/en/integrations/go/clickhouse-go/introduction
http://localhost:3000/docs/en/integrations/go/clickhouse-go/installation
http://localhost:3000/docs/en/integrations/go/clickhouse-go/clickhouse-api
http://localhost:3000/docs/en/integrations/go/clickhouse-go/database-sql-api
http://localhost:3000/docs/en/integrations/go/clickhouse-go/performance-tips
http://localhost:3000/docs/en/integrations/python
http://localhost:3000/docs/en/integrations/language-clients/python/intro
http://localhost:3000/docs/en/integrations/language-clients/python/driver-api
http://localhost:3000/docs/en/interfaces
http://localhost:3000/docs/en/interfaces/overview
http://localhost:3000/docs/en/interfaces/cli
http://localhost:3000/docs/en/interfaces/tcp
http://localhost:3000/docs/en/interfaces/grpc
http://localhost:3000/docs/en/interfaces/http
http://localhost:3000/docs/en/interfaces/mysql
http://localhost:3000/docs/en/interfaces/postgresql
http://localhost:3000/docs/en/interfaces/formats
http://localhost:3000/docs/en/interfaces/jdbc
http://localhost:3000/docs/en/interfaces/odbc
http://localhost:3000/docs/en/interfaces/cpp
http://localhost:3000/docs/en/interfaces/third-party/
http://localhost:3000/docs/en/interfaces/third-party/client-libraries
http://localhost:3000/docs/en/interfaces/third-party/integrations
http://localhost:3000/docs/en/interfaces/third-party/gui
http://localhost:3000/docs/en/interfaces/third-party/proxy
http://localhost:3000/docs/en/integrations/data-ingestion
http://localhost:3000/docs/en/integrations/data-ingestion/upload-file-to-clickhouse-cloud
http://localhost:3000/docs/en/integrations/data-ingestion/insert-local-files
http://localhost:3000/docs/en/integrations/s3
http://localhost:3000/docs/en/integrations/s3/s3-intro
http://localhost:3000/docs/en/integrations/s3/s3-table-functions
http://localhost:3000/docs/en/integrations/s3/s3-table-engine
http://localhost:3000/docs/en/integrations/s3/s3-merge-tree
http://localhost:3000/docs/en/integrations/s3/s3-optimizing-performance
http://localhost:3000/docs/en/integrations/s3/s3-minio
http://localhost:3000/docs/en/guides/sre/configuring-s3-for-clickhouse-use
http://localhost:3000/docs/en/guides/sre/s3-multi-region
http://localhost:3000/docs/en/integrations/data-ingestion/etl-tools
http://localhost:3000/docs/en/integrations/airbyte-and-clickhouse
http://localhost:3000/docs/en/integrations/dbt
http://localhost:3000/docs/en/integrations/dbt/dbt-intro
http://localhost:3000/docs/en/integrations/dbt/dbt-setup
http://localhost:3000/docs/en/integrations/dbt/dbt-connecting
http://localhost:3000/docs/en/integrations/dbt/dbt-view-model
http://localhost:3000/docs/en/integrations/dbt/dbt-table-model
http://localhost:3000/docs/en/integrations/dbt/dbt-incremental-model
http://localhost:3000/docs/en/integrations/dbt/dbt-snapshot
http://localhost:3000/docs/en/integrations/dbt/dbt-seeds
http://localhost:3000/docs/en/integrations/dbt/dbt-limitations
http://localhost:3000/docs/en/integrations/redshift
http://localhost:3000/docs/en/integrations/redshift/migrate-redshift-to-clickhouse
http://localhost:3000/docs/en/integrations/redshift/redshift-push-to-clickhouse
http://localhost:3000/docs/en/integrations/redshift/redshift-pull-to-clickhouse
http://localhost:3000/docs/en/integrations/redshift/redshift-pivot-to-clickhouse
http://localhost:3000/docs/en/integrations/vector-to-clickhouse
http://localhost:3000/docs/en/integrations/data-ingestion/dbms
http://localhost:3000/docs/en/integrations/data-ingestion/dbms/odbc-with-clickhouse
http://localhost:3000/docs/en/integrations/jdbc/jdbc-with-clickhouse
http://localhost:3000/docs/en/integrations/mysql
http://localhost:3000/docs/en/integrations/mysql/mysql-with-clickhouse
http://localhost:3000/docs/en/integrations/mysql/mysql-with-clickhouse-database-engine
http://localhost:3000/docs/en/integrations/postgresql
http://localhost:3000/docs/en/integrations/postgresql/postgres-with-clickhouse
http://localhost:3000/docs/en/integrations/postgresql/postgres-with-clickhouse-database-engine
http://localhost:3000/docs/en/integrations/kafka
http://localhost:3000/docs/en/integrations/kafka/kakfa-intro
http://localhost:3000/docs/en/integrations/kafka/kafka-choosing-an-approach
http://localhost:3000/docs/en/integrations/kafka/kafka-table-engine
http://localhost:3000/docs/en/integrations/kafka/kafka-connect-intro
http://localhost:3000/docs/en/integrations/kafka/kafka-connect-options
http://localhost:3000/docs/en/integrations/kafka/kafka-connect-jdbc
http://localhost:3000/docs/en/integrations/kafka/kafka-connect-http
http://localhost:3000/docs/en/integrations/kafka/kafka-vector
http://localhost:3000/docs/en/integrations/data-ingestion/kafka/code/
http://localhost:3000/docs/en/integrations/data-ingestion/kafka/code/connectors/
http://localhost:3000/docs/en/integrations/data-ingestion/kafka/code/producer/
http://localhost:3000/docs/en/integrations/data-visualization
http://localhost:3000/docs/en/integrations/deepnote
http://localhost:3000/docs/en/connect-a-ui/grafana-and-clickhouse
http://localhost:3000/docs/en/connect-a-ui/metabase-and-clickhouse
http://localhost:3000/docs/en/connect-a-ui/superset-and-clickhouse
http://localhost:3000/docs/en/connect-a-ui/tableau-and-clickhouse
http://localhost:3000/docs/en/integrations/migration/
http://localhost:3000/docs/en/integrations/migration/clickhouse-to-cloud
http://localhost:3000/docs/en/integrations/migration/clickhouse-local
http://localhost:3000/docs/en/integrations/migration/etl-tool-to-clickhouse
http://localhost:3000/docs/en/integrations/migration/object-storage-to-clickhouse
http://localhost:3000/docs/en/optimize
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes/sparse-primary-indexes-intro
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes/sparse-primary-indexes-design
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes/sparse-primary-indexes-multiple
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes/sparse-primary-indexes-cardinality
http://localhost:3000/docs/en/guides/improving-query-performance/sparse-primary-indexes/sparse-primary-indexes-uuids
http://localhost:3000/docs/en/guides/improving-query-performance/skipping-indexes
http://localhost:3000/docs/en/operations/optimizing-performance/sampling-query-profiler
http://localhost:3000/docs/en/operations/performance-test
http://localhost:3000/docs/en/operations/caches
http://localhost:3000/docs/en/operations/tips
http://localhost:3000/docs/en/operations/opentelemetry
http://localhost:3000/docs/en/manage
http://localhost:3000/docs/en/manage/billing
http://localhost:3000/docs/en/manage/scaling
http://localhost:3000/docs/en/manage/updates
http://localhost:3000/docs/en/manage/backups
http://localhost:3000/docs/en/operations/monitoring
http://localhost:3000/docs/en/manage/tuning-for-cloud-cost-efficiency
http://localhost:3000/docs/en/manage/replication-and-sharding
http://localhost:3000/docs/en/operations/clickhouse-keeper
http://localhost:3000/docs/en/guides/sre/keeper/clickhouse-keeper
http://localhost:3000/docs/en/guides/sre/keeper/clickhouse-keeper-uuid
http://localhost:3000/docs/en/operations/ssl-zookeeper
http://localhost:3000/docs/en/guides/sre/scaling-clusters
http://localhost:3000/docs/en/manage/users
http://localhost:3000/docs/en/guides/sre/configuring-ldap
http://localhost:3000/docs/en/guides/sre/ssl-user-auth
http://localhost:3000/docs/en/guides/sre/users-and-roles
http://localhost:3000/docs/en/guides/sre/user-management/alter-permissions
http://localhost:3000/docs/en/operations/access-rights
http://localhost:3000/docs/en/operations/quotas
http://localhost:3000/docs/en/operations/external-authenticators/
http://localhost:3000/docs/en/operations/external-authenticators/kerberos
http://localhost:3000/docs/en/operations/external-authenticators/ldap
http://localhost:3000/docs/en/operations/external-authenticators/ssl-x509
http://localhost:3000/docs/en/manage/security
http://localhost:3000/docs/en/manage/security/ip-access-list
http://localhost:3000/docs/en/manage/security/aws-privatelink
http://localhost:3000/docs/en/manage/security/organization-activity
http://localhost:3000/docs/en/operations/named-collections
http://localhost:3000/docs/en/guides/sre/configuring-ssl
http://localhost:3000/docs/en/guides/sre/network-ports
http://localhost:3000/docs/en/operations/storing-data
http://localhost:3000/docs/en/manage/configuration
http://localhost:3000/docs/en/operations/configuration-files
http://localhost:3000/docs/en/operations/settings/
http://localhost:3000/docs/en/operations/settings/settings
http://localhost:3000/docs/en/operations/settings/permissions-for-queries
http://localhost:3000/docs/en/operations/settings/query-complexity
http://localhost:3000/docs/en/operations/settings/settings-profiles
http://localhost:3000/docs/en/operations/settings/constraints-on-settings
http://localhost:3000/docs/en/operations/settings/settings-users
http://localhost:3000/docs/en/operations/settings/memory-overcommit
http://localhost:3000/docs/en/operations/settings/merge-tree-settings
http://localhost:3000/docs/en/operations/system-tables/
http://localhost:3000/docs/en/operations/system-tables/asynchronous_metric_log
http://localhost:3000/docs/en/operations/system-tables/asynchronous_metrics
http://localhost:3000/docs/en/operations/system-tables/clusters
http://localhost:3000/docs/en/operations/system-tables/columns
http://localhost:3000/docs/en/operations/system-tables/contributors
http://localhost:3000/docs/en/operations/system-tables/crash-log
http://localhost:3000/docs/en/operations/system-tables/current-roles
http://localhost:3000/docs/en/operations/system-tables/data_skipping_indices
http://localhost:3000/docs/en/operations/system-tables/data_type_families
http://localhost:3000/docs/en/operations/system-tables/databases
http://localhost:3000/docs/en/operations/system-tables/detached_parts
http://localhost:3000/docs/en/operations/system-tables/dictionaries
http://localhost:3000/docs/en/operations/system-tables/disks
http://localhost:3000/docs/en/operations/system-tables/distributed_ddl_queue
http://localhost:3000/docs/en/operations/system-tables/distribution_queue
http://localhost:3000/docs/en/operations/system-tables/enabled-roles
http://localhost:3000/docs/en/operations/system-tables/errors
http://localhost:3000/docs/en/operations/system-tables/events
http://localhost:3000/docs/en/operations/system-tables/functions
http://localhost:3000/docs/en/operations/system-tables/grants
http://localhost:3000/docs/en/operations/system-tables/graphite_retentions
http://localhost:3000/docs/en/operations/system-tables/information_schema
http://localhost:3000/docs/en/operations/system-tables/licenses
http://localhost:3000/docs/en/operations/system-tables/merge_tree_settings
http://localhost:3000/docs/en/operations/system-tables/merges
http://localhost:3000/docs/en/operations/system-tables/metric_log
http://localhost:3000/docs/en/operations/system-tables/metrics
http://localhost:3000/docs/en/operations/system-tables/mutations
http://localhost:3000/docs/en/operations/system-tables/numbers
http://localhost:3000/docs/en/operations/system-tables/numbers_mt
http://localhost:3000/docs/en/operations/system-tables/one
http://localhost:3000/docs/en/operations/system-tables/opentelemetry_span_log
http://localhost:3000/docs/en/operations/system-tables/part_log
http://localhost:3000/docs/en/operations/system-tables/parts
http://localhost:3000/docs/en/operations/system-tables/parts_columns
http://localhost:3000/docs/en/operations/system-tables/processes
http://localhost:3000/docs/en/operations/system-tables/query_log
http://localhost:3000/docs/en/operations/system-tables/query_thread_log
http://localhost:3000/docs/en/operations/system-tables/query_views_log
http://localhost:3000/docs/en/operations/system-tables/quota_limits
http://localhost:3000/docs/en/operations/system-tables/quota_usage
http://localhost:3000/docs/en/operations/system-tables/quotas
http://localhost:3000/docs/en/operations/system-tables/quotas_usage
http://localhost:3000/docs/en/operations/system-tables/replicas
http://localhost:3000/docs/en/operations/system-tables/replicated_fetches
http://localhost:3000/docs/en/operations/system-tables/replication_queue
http://localhost:3000/docs/en/operations/system-tables/role-grants
http://localhost:3000/docs/en/operations/system-tables/roles
http://localhost:3000/docs/en/operations/system-tables/row_policies
http://localhost:3000/docs/en/operations/system-tables/session_log
http://localhost:3000/docs/en/operations/system-tables/settings
http://localhost:3000/docs/en/operations/system-tables/settings_profile_elements
http://localhost:3000/docs/en/operations/system-tables/settings_profiles
http://localhost:3000/docs/en/operations/system-tables/stack_trace
http://localhost:3000/docs/en/operations/system-tables/storage_policies
http://localhost:3000/docs/en/operations/system-tables/table_engines
http://localhost:3000/docs/en/operations/system-tables/tables
http://localhost:3000/docs/en/operations/system-tables/text_log
http://localhost:3000/docs/en/operations/system-tables/time_zones
http://localhost:3000/docs/en/operations/system-tables/trace_log
http://localhost:3000/docs/en/operations/system-tables/users
http://localhost:3000/docs/en/operations/system-tables/zookeeper
http://localhost:3000/docs/en/operations/system-tables/zookeeper_log
http://localhost:3000/docs/en/operations/server-configuration-parameters/
http://localhost:3000/docs/en/operations/server-configuration-parameters/settings
http://localhost:3000/docs/en/operations/utilities/
http://localhost:3000/docs/en/operations/utilities/clickhouse-copier
http://localhost:3000/docs/en/operations/utilities/clickhouse-local
http://localhost:3000/docs/en/operations/utilities/clickhouse-benchmark
http://localhost:3000/docs/en/operations/utilities/clickhouse-compressor
http://localhost:3000/docs/en/operations/utilities/clickhouse-format
http://localhost:3000/docs/en/operations/utilities/clickhouse-obfuscator
http://localhost:3000/docs/en/operations/utilities/odbc-bridge
http://localhost:3000/docs/en/analyze
http://localhost:3000/docs/en/sql-reference
http://localhost:3000/docs/en/sql-reference/statements/
http://localhost:3000/docs/en/sql-reference/statements/select/
http://localhost:3000/docs/en/sql-reference/statements/select/all
http://localhost:3000/docs/en/sql-reference/statements/select/array-join
http://localhost:3000/docs/en/sql-reference/statements/select/distinct
http://localhost:3000/docs/en/sql-reference/statements/select/except
http://localhost:3000/docs/en/sql-reference/statements/select/format
http://localhost:3000/docs/en/sql-reference/statements/select/from
http://localhost:3000/docs/en/sql-reference/statements/select/group-by
http://localhost:3000/docs/en/sql-reference/statements/select/having
http://localhost:3000/docs/en/sql-reference/statements/select/intersect
http://localhost:3000/docs/en/sql-reference/statements/select/into-outfile
http://localhost:3000/docs/en/sql-reference/statements/select/join
http://localhost:3000/docs/en/sql-reference/statements/select/limit-by
http://localhost:3000/docs/en/sql-reference/statements/select/limit
http://localhost:3000/docs/en/sql-reference/statements/select/offset
http://localhost:3000/docs/en/sql-reference/statements/select/order-by
http://localhost:3000/docs/en/sql-reference/statements/select/prewhere
http://localhost:3000/docs/en/sql-reference/statements/select/sample
http://localhost:3000/docs/en/sql-reference/statements/select/union
http://localhost:3000/docs/en/sql-reference/statements/select/where
http://localhost:3000/docs/en/sql-reference/statements/select/with
http://localhost:3000/docs/en/sql-reference/statements/insert-into
http://localhost:3000/docs/en/sql-reference/statements/create/
http://localhost:3000/docs/en/sql-reference/statements/create/database
http://localhost:3000/docs/en/sql-reference/statements/create/table
http://localhost:3000/docs/en/sql-reference/statements/create/view
http://localhost:3000/docs/en/sql-reference/statements/create/dictionary
http://localhost:3000/docs/en/sql-reference/statements/create/function
http://localhost:3000/docs/en/sql-reference/statements/create/user
http://localhost:3000/docs/en/sql-reference/statements/create/role
http://localhost:3000/docs/en/sql-reference/statements/create/row-policy
http://localhost:3000/docs/en/sql-reference/statements/create/quota
http://localhost:3000/docs/en/sql-reference/statements/create/settings-profile
http://localhost:3000/docs/en/sql-reference/statements/alter/
http://localhost:3000/docs/en/sql-reference/statements/alter/column
http://localhost:3000/docs/en/sql-reference/statements/alter/partition
http://localhost:3000/docs/en/sql-reference/statements/alter/setting
http://localhost:3000/docs/en/sql-reference/statements/alter/delete
http://localhost:3000/docs/en/sql-reference/statements/alter/update
http://localhost:3000/docs/en/sql-reference/statements/alter/order-by
http://localhost:3000/docs/en/sql-reference/statements/alter/sample-by
http://localhost:3000/docs/en/sql-reference/statements/alter/skipping-index
http://localhost:3000/docs/en/sql-reference/statements/alter/constraint
http://localhost:3000/docs/en/sql-reference/statements/alter/ttl
http://localhost:3000/docs/en/sql-reference/statements/alter/user
http://localhost:3000/docs/en/sql-reference/statements/alter/quota
http://localhost:3000/docs/en/sql-reference/statements/alter/role
http://localhost:3000/docs/en/sql-reference/statements/alter/row-policy
http://localhost:3000/docs/en/sql-reference/statements/alter/settings-profile
http://localhost:3000/docs/en/sql-reference/statements/alter/projection
http://localhost:3000/docs/en/sql-reference/statements/alter/view
http://localhost:3000/docs/en/sql-reference/statements/alter/comment
http://localhost:3000/docs/en/sql-reference/statements/delete
http://localhost:3000/docs/en/sql-reference/statements/system
http://localhost:3000/docs/en/sql-reference/statements/show
http://localhost:3000/docs/en/sql-reference/statements/grant
http://localhost:3000/docs/en/sql-reference/statements/explain
http://localhost:3000/docs/en/sql-reference/statements/revoke
http://localhost:3000/docs/en/sql-reference/statements/attach
http://localhost:3000/docs/en/sql-reference/statements/check-table
http://localhost:3000/docs/en/sql-reference/statements/describe-table
http://localhost:3000/docs/en/sql-reference/statements/detach
http://localhost:3000/docs/en/sql-reference/statements/drop
http://localhost:3000/docs/en/sql-reference/statements/exists
http://localhost:3000/docs/en/sql-reference/statements/kill
http://localhost:3000/docs/en/sql-reference/statements/optimize
http://localhost:3000/docs/en/sql-reference/statements/rename
http://localhost:3000/docs/en/sql-reference/statements/exchange
http://localhost:3000/docs/en/sql-reference/statements/set
http://localhost:3000/docs/en/sql-reference/statements/set-role
http://localhost:3000/docs/en/sql-reference/statements/truncate
http://localhost:3000/docs/en/sql-reference/statements/use
http://localhost:3000/docs/en/sql-reference/statements/watch
http://localhost:3000/docs/en/sql-reference/syntax
http://localhost:3000/docs/en/sql-reference/distributed-ddl
http://localhost:3000/docs/en/sql-reference/functions/
http://localhost:3000/docs/en/sql-reference/functions/arithmetic-functions
http://localhost:3000/docs/en/sql-reference/functions/array-functions
http://localhost:3000/docs/en/sql-reference/functions/comparison-functions
http://localhost:3000/docs/en/sql-reference/functions/logical-functions
http://localhost:3000/docs/en/sql-reference/functions/type-conversion-functions
http://localhost:3000/docs/en/sql-reference/functions/date-time-functions
http://localhost:3000/docs/en/sql-reference/functions/string-functions
http://localhost:3000/docs/en/sql-reference/functions/string-search-functions
http://localhost:3000/docs/en/sql-reference/functions/string-replace-functions
http://localhost:3000/docs/en/sql-reference/functions/conditional-functions
http://localhost:3000/docs/en/sql-reference/functions/files
http://localhost:3000/docs/en/sql-reference/functions/math-functions
http://localhost:3000/docs/en/sql-reference/functions/rounding-functions
http://localhost:3000/docs/en/sql-reference/functions/tuple-map-functions
http://localhost:3000/docs/en/sql-reference/functions/splitting-merging-functions
http://localhost:3000/docs/en/sql-reference/functions/bit-functions
http://localhost:3000/docs/en/sql-reference/functions/bitmap-functions
http://localhost:3000/docs/en/sql-reference/functions/hash-functions
http://localhost:3000/docs/en/sql-reference/functions/random-functions
http://localhost:3000/docs/en/sql-reference/functions/encoding-functions
http://localhost:3000/docs/en/sql-reference/functions/uuid-functions
http://localhost:3000/docs/en/sql-reference/functions/url-functions
http://localhost:3000/docs/en/sql-reference/functions/ip-address-functions
http://localhost:3000/docs/en/sql-reference/functions/json-functions
http://localhost:3000/docs/en/sql-reference/functions/ext-dict-functions
http://localhost:3000/docs/en/sql-reference/functions/ym-dict-functions
http://localhost:3000/docs/en/sql-reference/functions/in-functions
http://localhost:3000/docs/en/sql-reference/functions/array-join
http://localhost:3000/docs/en/sql-reference/functions/geo/
http://localhost:3000/docs/en/sql-reference/functions/geo/coordinates
http://localhost:3000/docs/en/sql-reference/functions/geo/geohash
http://localhost:3000/docs/en/sql-reference/functions/geo/h3
http://localhost:3000/docs/en/sql-reference/functions/geo/s2
http://localhost:3000/docs/en/sql-reference/functions/functions-for-nulls
http://localhost:3000/docs/en/sql-reference/functions/machine-learning-functions
http://localhost:3000/docs/en/sql-reference/functions/introspection
http://localhost:3000/docs/en/sql-reference/functions/tuple-functions
http://localhost:3000/docs/en/sql-reference/functions/encryption-functions
http://localhost:3000/docs/en/sql-reference/functions/nlp-functions
http://localhost:3000/docs/en/sql-reference/functions/other-functions
http://localhost:3000/docs/en/sql-reference/functions/time-window-functions
http://localhost:3000/docs/en/sql-reference/functions/distance-functions
http://localhost:3000/docs/en/sql-reference/functions/uniqtheta-functions
http://localhost:3000/docs/en/sql-reference/aggregate-functions/
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/count
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/min
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/max
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/sum
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/avg
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/any
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/stddevpop
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/stddevsamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/varpop
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/varsamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/covarpop
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/covarsamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/anyheavy
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/anylast
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/argmin
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/argmax
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/avgweighted
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/corr
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/exponentialmovingaverage
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/topk
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/topkweighted
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/grouparray
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupuniqarray
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/grouparrayinsertat
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/grouparraymovingsum
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/grouparraymovingavg
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/grouparraysample
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitand
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitor
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitxor
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitmap
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitmapand
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitmapor
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/groupbitmapxor
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/sumwithoverflow
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/deltasum
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/deltasumtimestamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/summap
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/minmap
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/maxmap
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/sumcount
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/rankCorr
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/sumkahan
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/intervalLengthSum
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/skewpop
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/skewsamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/kurtpop
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/kurtsamp
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniq
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniqexact
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniqcombined
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniqcombined64
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniqhll12
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/uniqthetasketch
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantile
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiles
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantileexact
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantileexactweighted
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiletiming
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiletimingweighted
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiledeterministic
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiletdigest
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantiletdigestweighted
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/quantilebfloat16
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/median
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/simplelinearregression
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/stochasticlinearregression
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/stochasticlogisticregression
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/categoricalinformationvalue
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/studentttest
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/welchttest
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/entropy
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/meanztest
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/mannwhitneyutest
http://localhost:3000/docs/en/sql-reference/aggregate-functions/reference/sparkbar
http://localhost:3000/docs/en/sql-reference/aggregate-functions/combinators
http://localhost:3000/docs/en/sql-reference/aggregate-functions/parametric-functions
http://localhost:3000/docs/en/sql-reference/aggregate-functions/grouping_function
http://localhost:3000/docs/en/sql-reference/table-functions/
http://localhost:3000/docs/en/sql-reference/table-functions/file
http://localhost:3000/docs/en/sql-reference/table-functions/merge
http://localhost:3000/docs/en/sql-reference/table-functions/numbers
http://localhost:3000/docs/en/sql-reference/table-functions/remote
http://localhost:3000/docs/en/sql-reference/table-functions/url
http://localhost:3000/docs/en/sql-reference/table-functions/mysql
http://localhost:3000/docs/en/sql-reference/table-functions/postgresql
http://localhost:3000/docs/en/sql-reference/table-functions/jdbc
http://localhost:3000/docs/en/sql-reference/table-functions/odbc
http://localhost:3000/docs/en/sql-reference/table-functions/hdfs
http://localhost:3000/docs/en/sql-reference/table-functions/s3
http://localhost:3000/docs/en/sql-reference/table-functions/input
http://localhost:3000/docs/en/sql-reference/table-functions/generate
http://localhost:3000/docs/en/sql-reference/table-functions/cluster
http://localhost:3000/docs/en/sql-reference/table-functions/view
http://localhost:3000/docs/en/sql-reference/table-functions/null
http://localhost:3000/docs/en/sql-reference/table-functions/dictionary
http://localhost:3000/docs/en/sql-reference/table-functions/hdfsCluster
http://localhost:3000/docs/en/sql-reference/table-functions/s3Cluster
http://localhost:3000/docs/en/sql-reference/table-functions/sqlite
http://localhost:3000/docs/en/sql-reference/dictionaries/
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-layout
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-lifetime
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-sources
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-structure
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-hierarchical
http://localhost:3000/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts-dict-polygon
http://localhost:3000/docs/en/sql-reference/dictionaries/internal-dicts
http://localhost:3000/docs/en/sql-reference/data-types/
http://localhost:3000/docs/en/sql-reference/data-types/int-uint
http://localhost:3000/docs/en/sql-reference/data-types/float
http://localhost:3000/docs/en/sql-reference/data-types/decimal
http://localhost:3000/docs/en/sql-reference/data-types/boolean
http://localhost:3000/docs/en/sql-reference/data-types/string
http://localhost:3000/docs/en/sql-reference/data-types/fixedstring
http://localhost:3000/docs/en/sql-reference/data-types/uuid
http://localhost:3000/docs/en/sql-reference/data-types/date
http://localhost:3000/docs/en/sql-reference/data-types/date32
http://localhost:3000/docs/en/sql-reference/data-types/datetime
http://localhost:3000/docs/en/sql-reference/data-types/datetime64
http://localhost:3000/docs/en/sql-reference/data-types/enum
http://localhost:3000/docs/en/sql-reference/data-types/lowcardinality
http://localhost:3000/docs/en/sql-reference/data-types/array
http://localhost:3000/docs/en/sql-reference/data-types/aggregatefunction
http://localhost:3000/docs/en/sql-reference/data-types/json
http://localhost:3000/docs/en/sql-reference/data-types/nested-data-structures/
http://localhost:3000/docs/en/sql-reference/data-types/nested-data-structures/nested
http://localhost:3000/docs/en/sql-reference/data-types/tuple
http://localhost:3000/docs/en/sql-reference/data-types/nullable
http://localhost:3000/docs/en/sql-reference/data-types/special-data-types/
http://localhost:3000/docs/en/sql-reference/data-types/special-data-types/expression
http://localhost:3000/docs/en/sql-reference/data-types/special-data-types/set
http://localhost:3000/docs/en/sql-reference/data-types/special-data-types/nothing
http://localhost:3000/docs/en/sql-reference/data-types/special-data-types/interval
http://localhost:3000/docs/en/sql-reference/data-types/domains/
http://localhost:3000/docs/en/sql-reference/data-types/domains/ipv4
http://localhost:3000/docs/en/sql-reference/data-types/domains/ipv6
http://localhost:3000/docs/en/sql-reference/data-types/multiword-types
http://localhost:3000/docs/en/sql-reference/data-types/geo
http://localhost:3000/docs/en/sql-reference/data-types/map
http://localhost:3000/docs/en/sql-reference/data-types/simpleaggregatefunction
http://localhost:3000/docs/en/sql-reference/operators/
http://localhost:3000/docs/en/sql-reference/operators/exists
http://localhost:3000/docs/en/sql-reference/operators/in
http://localhost:3000/docs/en/sql-reference/ansi
http://localhost:3000/docs/en/sql-reference/formats
http://localhost:3000/docs/en/sql-reference/window-functions/
http://localhost:3000/docs/en/engines
http://localhost:3000/docs/en/engines/database-engines/
http://localhost:3000/docs/en/engines/database-engines/atomic
http://localhost:3000/docs/en/engines/database-engines/lazy
http://localhost:3000/docs/en/engines/database-engines/replicated
http://localhost:3000/docs/en/engines/database-engines/postgresql
http://localhost:3000/docs/en/engines/database-engines/mysql
http://localhost:3000/docs/en/engines/database-engines/sqlite
http://localhost:3000/docs/en/engines/database-engines/materialized-postgresql
http://localhost:3000/docs/en/engines/database-engines/materialized-mysql
http://localhost:3000/docs/en/engines/table-engines/
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/mergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/replication
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/custom-partitioning-key
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/replacingmergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/summingmergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/aggregatingmergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/collapsingmergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/versionedcollapsingmergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/graphitemergetree
http://localhost:3000/docs/en/engines/table-engines/mergetree-family/annindexes
http://localhost:3000/docs/en/engines/table-engines/log-family/
http://localhost:3000/docs/en/engines/table-engines/log-family/log
http://localhost:3000/docs/en/engines/table-engines/log-family/stripelog
http://localhost:3000/docs/en/engines/table-engines/log-family/tinylog
http://localhost:3000/docs/en/engines/table-engines/integrations/
http://localhost:3000/docs/en/engines/table-engines/integrations/odbc
http://localhost:3000/docs/en/engines/table-engines/integrations/jdbc
http://localhost:3000/docs/en/engines/table-engines/integrations/hive
http://localhost:3000/docs/en/engines/table-engines/integrations/mysql
http://localhost:3000/docs/en/engines/table-engines/integrations/mongodb
http://localhost:3000/docs/en/engines/table-engines/integrations/hdfs
http://localhost:3000/docs/en/engines/table-engines/integrations/s3
http://localhost:3000/docs/en/engines/table-engines/integrations/sqlite
http://localhost:3000/docs/en/engines/table-engines/integrations/kafka
http://localhost:3000/docs/en/engines/table-engines/integrations/embedded-rocksdb
http://localhost:3000/docs/en/engines/table-engines/integrations/rabbitmq
http://localhost:3000/docs/en/engines/table-engines/integrations/postgresql
http://localhost:3000/docs/en/engines/table-engines/integrations/ExternalDistributed
http://localhost:3000/docs/en/engines/table-engines/integrations/materialized-postgresql
http://localhost:3000/docs/en/engines/table-engines/integrations/nats
http://localhost:3000/docs/en/engines/table-engines/special/
http://localhost:3000/docs/en/engines/table-engines/special/distributed
http://localhost:3000/docs/en/engines/table-engines/special/dictionary
http://localhost:3000/docs/en/engines/table-engines/special/merge
http://localhost:3000/docs/en/engines/table-engines/special/file
http://localhost:3000/docs/en/engines/table-engines/special/null
http://localhost:3000/docs/en/engines/table-engines/special/set
http://localhost:3000/docs/en/engines/table-engines/special/join
http://localhost:3000/docs/en/engines/table-engines/special/url
http://localhost:3000/docs/en/engines/table-engines/special/view
http://localhost:3000/docs/en/engines/table-engines/special/materializedview
http://localhost:3000/docs/en/engines/table-engines/special/memory
http://localhost:3000/docs/en/engines/table-engines/special/buffer
http://localhost:3000/docs/en/engines/table-engines/special/external-data
http://localhost:3000/docs/en/engines/table-engines/special/generate
http://localhost:3000/docs/en/guides
http://localhost:3000/docs/en/guides/developer/full-text-search
http://localhost:3000/docs/en/guides/developer/mutations
http://localhost:3000/docs/en/guides/developer/working-with-json
http://localhost:3000/docs/en/guides/developer/working-with-json/json-intro
http://localhost:3000/docs/en/guides/developer/working-with-json/json-structured
http://localhost:3000/docs/en/guides/developer/working-with-json/json-semi-structured
http://localhost:3000/docs/en/guides/developer/working-with-json/json-other-approaches
http://localhost:3000/docs/en/guides/developer/transactional
http://localhost:3000/docs/en/development
http://localhost:3000/docs/en/development/developer-instruction
http://localhost:3000/docs/en/development/architecture
http://localhost:3000/docs/en/development/continuous-integration
http://localhost:3000/docs/en/development/adding_test_queries
http://localhost:3000/docs/en/development/build
http://localhost:3000/docs/en/development/build-osx
http://localhost:3000/docs/en/development/build-cross-osx
http://localhost:3000/docs/en/development/build-cross-arm
http://localhost:3000/docs/en/development/build-cross-riscv
http://localhost:3000/docs/en/development/style
http://localhost:3000/docs/en/development/tests
http://localhost:3000/docs/en/development/contrib
http://localhost:3000/docs/en/development/integrating_rust_libraries
http://localhost:3000/docs/en/native-protocol
http://localhost:3000/docs/en/native-protocol/basics
http://localhost:3000/docs/en/native-protocol/client
http://localhost:3000/docs/en/native-protocol/server
http://localhost:3000/docs/en/native-protocol/columns
http://localhost:3000/docs/en/native-protocol/hash
http://localhost:3000/docs/en/native-protocol/compression
http://localhost:3000/docs/en/faq
http://localhost:3000/docs/en/faq/billing
http://localhost:3000/docs/en/faq/troubleshooting
http://localhost:3000/docs/en/faq/general/
http://localhost:3000/docs/en/faq/general/columnar-database
http://localhost:3000/docs/en/faq/general/dbms-naming
http://localhost:3000/docs/en/faq/general/how-do-i-contribute-code-to-clickhouse
http://localhost:3000/docs/en/faq/general/mapreduce
http://localhost:3000/docs/en/faq/general/ne-tormozit
http://localhost:3000/docs/en/faq/general/olap
http://localhost:3000/docs/en/faq/general/who-is-using-clickhouse
http://localhost:3000/docs/en/faq/general/why-clickhouse-is-so-fast
http://localhost:3000/docs/en/faq/integration/
http://localhost:3000/docs/en/faq/integration/file-export
http://localhost:3000/docs/en/faq/integration/json-import
http://localhost:3000/docs/en/faq/integration/oracle-odbc
http://localhost:3000/docs/en/faq/operations/
http://localhost:3000/docs/en/faq/operations/delete-old-data
http://localhost:3000/docs/en/faq/operations/multi-region-replication
http://localhost:3000/docs/en/faq/operations/production
http://localhost:3000/docs/en/faq/use-cases/
http://localhost:3000/docs/en/faq/use-cases/key-value
http://localhost:3000/docs/en/faq/use-cases/time-series
http://localhost:3000/docs/en/whats-new
http://localhost:3000/docs/category/changelog
http://localhost:3000/docs/en/whats-new/cloud
http://localhost:3000/docs/en/whats-new/changelog/
http://localhost:3000/docs/en/whats-new/changelog/2021
http://localhost:3000/docs/en/whats-new/changelog/2020
http://localhost:3000/docs/en/whats-new/changelog/2019
http://localhost:3000/docs/en/whats-new/changelog/2018
http://localhost:3000/docs/en/whats-new/changelog/2017
http://localhost:3000/docs/en/whats-new/security-changelog
http://localhost:3000/docs/en/whats-new/cloud-compatibility
http://localhost:3000/docs/en/whats-new/roadmap
http://localhost:3000/docs/en/about-us
http://localhost:3000/docs/en/intro
http://localhost:3000/docs/en/about-us/cloud
http://localhost:3000/docs/en/about-us/support
http://localhost:3000/docs/en/about-us/history
http://localhost:3000/docs/en/about-us/distinctive-features
http://localhost:3000/docs/en/about-us/adopters
http://localhost:3000/docs/en/about-us/performance

View File

@ -0,0 +1,34 @@
services:
gotenberg:
image: gotenberg/gotenberg
healthcheck:
test: ["CMD", "curl", "--silent", "--fail", "http://localhost:3000/health"]
docusaurus:
build: ../
environment:
- NODE_OPTIONS="--max-old-space-size=8192"
- DISABLE_VERSIONING='true'
- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
- PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ports:
- 3000:3000
volumes:
- ../../PDFoutput:/app/PDFoutput
- ../../en:/app/docusaurus/docs
- ../../zh:/app/docusaurus/i18n/zh/docusaurus-plugin-content-docs/current
working_dir: /app/docusaurus
entrypoint: >
/bin/bash -c "
cd PDF && yarn install &&
python3 -m venv .venv &&
source .venv/bin/activate &&
pip3 install pdfcombine &&
cd /app/docusaurus &&
yarn install &&
yarn build &&
yarn serve -p 3000 -h 0.0.0.0 &&
tail -f /dev/null
"

View File

@ -0,0 +1,128 @@
const fs = require('node:fs');
const readline = require('node:readline');
const axios = require('axios');
const cheerio = require('cheerio');
const process = require('process');
const util = require('node:util');
async function getPageTitle(url) {
try {
const response = await axios.get(url);
const html = response.data;
const $ = cheerio.load(html);
const h1Text = $('h1').text();
if (h1Text !== "") { return h1Text; }
else { return "blank"; }
} catch (error) {
console.error('Error:', error);
}
}
function getUrls(url) {
var execSync = require('child_process').execSync;
// the URL that the user has is to `0.0.0.0` or `localhost`,
// which needs to be modified to the `docusaurus` service
// in the Docker compose environment
let docusaurusUrl =
url.replace("localhost", "docusaurus").replace("0.0.0.0", "docusaurus");
var command = `npx docusaurus-prince-pdf --list-only -u ${docusaurusUrl} --file URLs.txt`
try {
const {stdout, stderr} = execSync(command);
} catch (error) {
console.log(error);
}
};
async function callGotenberg(docusaurusUrl, fileName) {
//var util = require('util');
var execSync = require('child_process').execSync;
var command = `curl --request POST http://gotenberg:3000/forms/chromium/convert/url --form url=${docusaurusUrl} -o ${fileName}`
child = execSync(command, function(error, stdout, stderr){
//console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if(error !== null)
{
console.log('exec error: ' + error);
}
});
}
async function processLineByLine() {
const fileStream = fs.createReadStream('URLs.txt');
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
for await (const line of rl) {
// Each line in input.txt will be successively available here as `line`.
//console.log(`URL: ${line}`);
await requestPage(line).then(resp => {
//console.log(`done.\n`);
}).catch(err => {
console.log(err);
});
}
}
async function requestPage(url) {
const fileName = '../../PDFoutput/'.concat(String(i).padStart(4, '0')).concat('.', 'pdf');
// Get the details to write the YAML file
// We need title and filename
const pageTitle = await getPageTitle(url);
const cleanedTitle = pageTitle.replaceAll('\[', '').replaceAll('\]', '').replaceAll(':', '').replaceAll(' | StarRocks', '')
const pageDetails = ` - file: ${fileName}\n title: ${cleanedTitle}\n`;
fs.appendFile('./combine.yaml', pageDetails, err => {
if (err) {
console.error(err);
} else {
//console.log(`Title is ${pageTitle}`);
//console.log(`Filename is ` + fileName );
// file written successfully
}
});
await callGotenberg(url, fileName);
i++;
}
function main(ms) {
// startingUrl is the URL for the first page of the docs
// Get all of the URLs and write to URLs.txt
getUrls(startingUrl);
console.log(startingUrl);
const yamlHeader = 'files:\n';
fs.writeFile('./combine.yaml', yamlHeader, err => {
if (err) {
console.error(err);
} else {
// file written successfully
}
});
processLineByLine();
};
var i = 0;
const startingUrl = process.argv[2];
main();

View File

@ -23,6 +23,7 @@
"@docusaurus/preset-classic": "^3.1.1",
"@docusaurus/theme-search-algolia": "^3.1.1",
"@mdx-js/react": "^3.0.0",
"axios": "^1.7.8",
"clsx": "^2.0.0",
"fs-extra": "^11.1.1",
"prism-react-renderer": "^2.1.0",

View File

@ -2639,6 +2639,11 @@ astring@^1.8.0:
resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731"
integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
at-least-node@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
@ -2656,6 +2661,15 @@ autoprefixer@^10.4.12, autoprefixer@^10.4.14:
picocolors "^1.0.0"
postcss-value-parser "^4.2.0"
axios@^1.7.8:
version "1.7.8"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.8.tgz#1997b1496b394c21953e68c14aaa51b7b5de3d6e"
integrity sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==
dependencies:
follow-redirects "^1.15.6"
form-data "^4.0.0"
proxy-from-env "^1.1.0"
babel-loader@^9.1.3:
version "9.1.3"
resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a"
@ -3072,6 +3086,13 @@ combine-promises@^1.1.0:
resolved "https://registry.yarnpkg.com/combine-promises/-/combine-promises-1.2.0.tgz#5f2e68451862acf85761ded4d9e2af7769c2ca6a"
integrity sha512-VcQB1ziGD0NXrhKxiwyNbCDmRzs/OShMs2GqW2DlU2A/Sd0nQxE1oWDAE5O0ygSx5mgQOn9eIFh7yKPgFRVkPQ==
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
comma-separated-tokens@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee"
@ -3516,6 +3537,11 @@ del@^6.1.1:
rimraf "^3.0.2"
slash "^3.0.0"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
depd@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@ -4081,6 +4107,11 @@ follow-redirects@^1.0.0:
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
follow-redirects@^1.15.6:
version "1.15.9"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
fork-ts-checker-webpack-plugin@^6.5.0:
version "6.5.3"
resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3"
@ -4105,6 +4136,15 @@ form-data-encoder@^2.1.2:
resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5"
integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==
form-data@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48"
integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
format@^0.2.0:
version "0.2.2"
resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b"
@ -5938,7 +5978,7 @@ mime-types@2.1.18:
dependencies:
mime-db "~1.33.0"
mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
@ -6764,6 +6804,11 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
proxy-from-env@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
punycode@^1.3.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 使用工具导入
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 运维集群
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 批量导入
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 前期准备
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 开发指南
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 管理资源
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 从 Apache Kafka® 导入
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 批量导入
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 后期管理
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 性能调优
import DocCardList from '@theme/DocCardList';

View File

@ -3,7 +3,7 @@ displayed_sidebar: docs
keywords: ['shitu']
---
#
# 查询加速
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 存算分离模式部署
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 存算一体模式部署
import DocCardList from '@theme/DocCardList';

View File

@ -2,7 +2,7 @@
displayed_sidebar: docs
---
#
# 存算分离模式部署
import DocCardList from '@theme/DocCardList';

View File

@ -1,7 +1,7 @@
---
displayed_sidebar: docs
---
#
# 使用工具导入
<head>
<link rel="canonical" href="https://docs.starrocks.io/docs/zh/loading/loading_tools/" />

View File

@ -2,10 +2,9 @@
displayed_sidebar: docs
sidebar_label: Apache Kafka
description: "从 Apache Kafka 持续导入数据"
title: Apache Kafka
---
#
# Apache Kafka
import DocCardList from '@theme/DocCardList';