{"owner":"apache","repo":"druid","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~   http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n\n\n# Apache Druid\n\nReal-time analytics database. Java, Maven, multi-module project.\n\n## Key Modules\n\n- `processing/`: Core query processing, aggregation, data structures\n- `server/`: Common server functionality, HTTP services\n- `sql/`: SQL planning (Calcite), SQL-to-native translation\n- `indexing-service/`: Task framework, ingestion coordination\n- `multi-stage-query/`: MSQ engine\n- `extensions-core/`: Core extensions (S3, Kafka, Kinesis, Parquet, DataSketches, etc.)\n- `web-console/`: React/TypeScript management UI\n- `quidem-ut/`: SQL query testing framework\n\n## Code Style\n\n- Read `dev/style-conventions.md` for conventions.\n- Forbidden APIs: `codestyle/druid-forbidden-apis.txt`.\n- **Always use `final`** for fields and variables that are not reassigned.\n- End every file with a newline.\n- Don't format changes unnecessarily.\n\n## Testing\n\n### JUnit 5 test helpers\n\nWhen adding or migrating tests, reuse these existing test-scope helpers:\n\n- `TemporaryFolderExtension` (`org.apache.druid.testing`) for tests that need a Druid-managed `File` temporary directory:\n\n  ```java\n  @RegisterExtension\n  public final TemporaryFolderExtension temporaryFolder = new TemporaryFolderExtension();\n  ```\n\n  Use `getRoot()`, `newFolder(...)`, or `newFile(...)`. Prefer `TemporaryFolderExtension` over JUnit 5 `@TempDir` or JUnit 4 `TemporaryFolder`. Do not add new `TempFolderOperations` usages; the existing compatibility bridge is only for tests that have not yet migrated.\n\n- `LoggerCaptureExtension` (`org.apache.druid.testing.junit`) for capturing Log4j events. Register it with the target class and use `getLogEvents()`, `clearLogEvents()`, or `awaitLogEvents()` as needed.\n\n## Pull Requests\n\n- Before opening a PR, self-review the complete diff against the target branch. Verify that every change is intentional and in scope, check for correctness and regressions, and run the relevant tests or checks.\n- PR titles targeting `master` must use the Conventional Commits format: `<type>: <description>` or `<type>(<scope>): <description>`.\n- For a breaking change, add `!` immediately before the colon: `<type>!: <description>` or `<type>(<scope>)!: <description>`. A breaking change is backward-incompatible and may require users to update existing code, configuration, or integrations.\n- Accepted types are `backport`, `build`, `ci`, `dev`, `docs`, `feat`, `fix`, `minor`, `perf`, `refactor`, `release`, `revert`, `style`, and `test`.\n- Example: `build: remove redundant license download step`.\n- Follow `.github/pull_request_template.md` when preparing the PR description.\n\n## Running Tests\n\nUse these flags for faster tests: `-Pskip-static-checks -Dweb.console.skip=true -T1C`\n\n**Single test method:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.CalciteQueryTest#testFoo\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**All tests in a package:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.**\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**Quidem (.iq) tests:**\n\nTo run `sql/src/test/quidem/org.apache.druid.quidem.SqlQuidemTest/numMerge.iq`:\n\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.SqlQuidemTest\" -Dquidem.filter=numMerge -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nTo run `quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaWin/basics_group_by.all.iq`:\n\n```\nmvn test -pl quidem-ut -am -Dtest=\"org.apache.druid.quidem.QTest\" -Dquidem.filter=qaWin/basics_group_by.all -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nAlways use `-Dquidem.filter` to avoid running the full suite. To run multiple tests, use commas like\n`-Dquidem.filter=file1,file2,file3` or use wildcards like `-Dquidem.filter=join*`. Include subdirectory names if\npresent, such as `-Dquidem.filter=qaWin/**`.\n\n\n### Web Console Development\n\nRefer to `web-console/README.md` for general instructions on developing the web console.\n\nRun `npm run test-unit` from the `web-console/` directory to verify your work. Before doing this for the first time\nin a fresh checkout, you will also need to run `npm install`.\n\nRun `npm run autofix` from the `web-console/` directory to fix formatting issues.\n\n### Documentation\n\n- When updating Markdown tables in `docs/`, preserve the existing table formatting.\n- Use backquotes for any code references. e.g., `serverPriorityToReplicas`, `ioConfig`.\n- Run `npm run spellcheck` from the `website/` directory to verify doc updates and update the `.spelling` file if needed.\n"},"files":{"AGENTS.md":"<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~   http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n\n\n# Apache Druid\n\nReal-time analytics database. Java, Maven, multi-module project.\n\n## Key Modules\n\n- `processing/`: Core query processing, aggregation, data structures\n- `server/`: Common server functionality, HTTP services\n- `sql/`: SQL planning (Calcite), SQL-to-native translation\n- `indexing-service/`: Task framework, ingestion coordination\n- `multi-stage-query/`: MSQ engine\n- `extensions-core/`: Core extensions (S3, Kafka, Kinesis, Parquet, DataSketches, etc.)\n- `web-console/`: React/TypeScript management UI\n- `quidem-ut/`: SQL query testing framework\n\n## Code Style\n\n- Read `dev/style-conventions.md` for conventions.\n- Forbidden APIs: `codestyle/druid-forbidden-apis.txt`.\n- **Always use `final`** for fields and variables that are not reassigned.\n- End every file with a newline.\n- Don't format changes unnecessarily.\n\n## Testing\n\n### JUnit 5 test helpers\n\nWhen adding or migrating tests, reuse these existing test-scope helpers:\n\n- `TemporaryFolderExtension` (`org.apache.druid.testing`) for tests that need a Druid-managed `File` temporary directory:\n\n  ```java\n  @RegisterExtension\n  public final TemporaryFolderExtension temporaryFolder = new TemporaryFolderExtension();\n  ```\n\n  Use `getRoot()`, `newFolder(...)`, or `newFile(...)`. Prefer `TemporaryFolderExtension` over JUnit 5 `@TempDir` or JUnit 4 `TemporaryFolder`. Do not add new `TempFolderOperations` usages; the existing compatibility bridge is only for tests that have not yet migrated.\n\n- `LoggerCaptureExtension` (`org.apache.druid.testing.junit`) for capturing Log4j events. Register it with the target class and use `getLogEvents()`, `clearLogEvents()`, or `awaitLogEvents()` as needed.\n\n## Pull Requests\n\n- Before opening a PR, self-review the complete diff against the target branch. Verify that every change is intentional and in scope, check for correctness and regressions, and run the relevant tests or checks.\n- PR titles targeting `master` must use the Conventional Commits format: `<type>: <description>` or `<type>(<scope>): <description>`.\n- For a breaking change, add `!` immediately before the colon: `<type>!: <description>` or `<type>(<scope>)!: <description>`. A breaking change is backward-incompatible and may require users to update existing code, configuration, or integrations.\n- Accepted types are `backport`, `build`, `ci`, `dev`, `docs`, `feat`, `fix`, `minor`, `perf`, `refactor`, `release`, `revert`, `style`, and `test`.\n- Example: `build: remove redundant license download step`.\n- Follow `.github/pull_request_template.md` when preparing the PR description.\n\n## Running Tests\n\nUse these flags for faster tests: `-Pskip-static-checks -Dweb.console.skip=true -T1C`\n\n**Single test method:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.CalciteQueryTest#testFoo\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**All tests in a package:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.**\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**Quidem (.iq) tests:**\n\nTo run `sql/src/test/quidem/org.apache.druid.quidem.SqlQuidemTest/numMerge.iq`:\n\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.SqlQuidemTest\" -Dquidem.filter=numMerge -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nTo run `quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaWin/basics_group_by.all.iq`:\n\n```\nmvn test -pl quidem-ut -am -Dtest=\"org.apache.druid.quidem.QTest\" -Dquidem.filter=qaWin/basics_group_by.all -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nAlways use `-Dquidem.filter` to avoid running the full suite. To run multiple tests, use commas like\n`-Dquidem.filter=file1,file2,file3` or use wildcards like `-Dquidem.filter=join*`. Include subdirectory names if\npresent, such as `-Dquidem.filter=qaWin/**`.\n\n\n### Web Console Development\n\nRefer to `web-console/README.md` for general instructions on developing the web console.\n\nRun `npm run test-unit` from the `web-console/` directory to verify your work. Before doing this for the first time\nin a fresh checkout, you will also need to run `npm install`.\n\nRun `npm run autofix` from the `web-console/` directory to fix formatting issues.\n\n### Documentation\n\n- When updating Markdown tables in `docs/`, preserve the existing table formatting.\n- Use backquotes for any code references. e.g., `serverPriorityToReplicas`, `ioConfig`.\n- Run `npm run spellcheck` from the `website/` directory to verify doc updates and update the `.spelling` file if needed.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"<!--\n  ~ Licensed to the Apache Software Foundation (ASF) under one\n  ~ or more contributor license agreements.  See the NOTICE file\n  ~ distributed with this work for additional information\n  ~ regarding copyright ownership.  The ASF licenses this file\n  ~ to you under the Apache License, Version 2.0 (the\n  ~ \"License\"); you may not use this file except in compliance\n  ~ with the License.  You may obtain a copy of the License at\n  ~\n  ~   http://www.apache.org/licenses/LICENSE-2.0\n  ~\n  ~ Unless required by applicable law or agreed to in writing,\n  ~ software distributed under the License is distributed on an\n  ~ \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  ~ KIND, either express or implied.  See the License for the\n  ~ specific language governing permissions and limitations\n  ~ under the License.\n  -->\n\n\n# Apache Druid\n\nReal-time analytics database. Java, Maven, multi-module project.\n\n## Key Modules\n\n- `processing/`: Core query processing, aggregation, data structures\n- `server/`: Common server functionality, HTTP services\n- `sql/`: SQL planning (Calcite), SQL-to-native translation\n- `indexing-service/`: Task framework, ingestion coordination\n- `multi-stage-query/`: MSQ engine\n- `extensions-core/`: Core extensions (S3, Kafka, Kinesis, Parquet, DataSketches, etc.)\n- `web-console/`: React/TypeScript management UI\n- `quidem-ut/`: SQL query testing framework\n\n## Code Style\n\n- Read `dev/style-conventions.md` for conventions.\n- Forbidden APIs: `codestyle/druid-forbidden-apis.txt`.\n- **Always use `final`** for fields and variables that are not reassigned.\n- End every file with a newline.\n- Don't format changes unnecessarily.\n\n## Testing\n\n### JUnit 5 test helpers\n\nWhen adding or migrating tests, reuse these existing test-scope helpers:\n\n- `TemporaryFolderExtension` (`org.apache.druid.testing`) for tests that need a Druid-managed `File` temporary directory:\n\n  ```java\n  @RegisterExtension\n  public final TemporaryFolderExtension temporaryFolder = new TemporaryFolderExtension();\n  ```\n\n  Use `getRoot()`, `newFolder(...)`, or `newFile(...)`. Prefer `TemporaryFolderExtension` over JUnit 5 `@TempDir` or JUnit 4 `TemporaryFolder`. Do not add new `TempFolderOperations` usages; the existing compatibility bridge is only for tests that have not yet migrated.\n\n- `LoggerCaptureExtension` (`org.apache.druid.testing.junit`) for capturing Log4j events. Register it with the target class and use `getLogEvents()`, `clearLogEvents()`, or `awaitLogEvents()` as needed.\n\n## Pull Requests\n\n- Before opening a PR, self-review the complete diff against the target branch. Verify that every change is intentional and in scope, check for correctness and regressions, and run the relevant tests or checks.\n- PR titles targeting `master` must use the Conventional Commits format: `<type>: <description>` or `<type>(<scope>): <description>`.\n- For a breaking change, add `!` immediately before the colon: `<type>!: <description>` or `<type>(<scope>)!: <description>`. A breaking change is backward-incompatible and may require users to update existing code, configuration, or integrations.\n- Accepted types are `backport`, `build`, `ci`, `dev`, `docs`, `feat`, `fix`, `minor`, `perf`, `refactor`, `release`, `revert`, `style`, and `test`.\n- Example: `build: remove redundant license download step`.\n- Follow `.github/pull_request_template.md` when preparing the PR description.\n\n## Running Tests\n\nUse these flags for faster tests: `-Pskip-static-checks -Dweb.console.skip=true -T1C`\n\n**Single test method:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.CalciteQueryTest#testFoo\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**All tests in a package:**\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.**\" -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\n**Quidem (.iq) tests:**\n\nTo run `sql/src/test/quidem/org.apache.druid.quidem.SqlQuidemTest/numMerge.iq`:\n\n```\nmvn test -pl sql -am -Dtest=\"org.apache.druid.sql.calcite.SqlQuidemTest\" -Dquidem.filter=numMerge -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nTo run `quidem-ut/src/test/quidem/org.apache.druid.quidem.QTest/qaWin/basics_group_by.all.iq`:\n\n```\nmvn test -pl quidem-ut -am -Dtest=\"org.apache.druid.quidem.QTest\" -Dquidem.filter=qaWin/basics_group_by.all -Dsurefire.failIfNoSpecifiedTests=false -Pskip-static-checks -Dweb.console.skip=true -T1C\n```\n\nAlways use `-Dquidem.filter` to avoid running the full suite. To run multiple tests, use commas like\n`-Dquidem.filter=file1,file2,file3` or use wildcards like `-Dquidem.filter=join*`. Include subdirectory names if\npresent, such as `-Dquidem.filter=qaWin/**`.\n\n\n### Web Console Development\n\nRefer to `web-console/README.md` for general instructions on developing the web console.\n\nRun `npm run test-unit` from the `web-console/` directory to verify your work. Before doing this for the first time\nin a fresh checkout, you will also need to run `npm install`.\n\nRun `npm run autofix` from the `web-console/` directory to fix formatting issues.\n\n### Documentation\n\n- When updating Markdown tables in `docs/`, preserve the existing table formatting.\n- Use backquotes for any code references. e.g., `serverPriorityToReplicas`, `ioConfig`.\n- Run `npm run spellcheck` from the `website/` directory to verify doc updates and update the `.spelling` file if needed.\n","category":"root","tokens":1364}]}