mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 04:58:50 +00:00
Nik Everett
876aebf7e0
SQL: Make extract work for any datetime function (elastic/x-pack-elasticsearch#3756)
This allows any datetime function to be present in `EXTRACT` which feels more consistent. `EXTRACT(FOO FROM bar)` is now just sugar for `FOO(bar)`. This is *much* simpler to explain in the documentation then "these 10 fields are supported by extract and they are the same as this subset of the datetime functions." The implementation of this is a little simpler then the old way. Instead of resolving the function in the parser we create an `UnresolvedFunction` that looks *almost* just like what we'd create for a single argument function and resolve the function in the `Analyzer`. This feels like a net positive as it allows us to group `EXTRACT` resolution failures with other function resolution failures. This also creates `UnresolvedFunctionTests` and `UnresolvedAttributeTests`. I had to create `UnresolvedFunctionTests` because `UnreolvedFunction` now has three boolean parameters which is incompatible with the generic `NodeSubclassTests`'s requirement that all ctor parameters be unique. I created `UnresolvedAttributeTests` because I didn't want `UnresolvedFunctionTests` to call `NodeSubclassTests` and figured that we'd want `UnresolvedAttributeTest` eventually and now felt like as good a time as any. Added a Original commit: elastic/x-pack-elasticsearch@358aada308
Build: Replace references to x-pack-elasticsearch paths with helper methods (elastic/x-pack-elasticsearch#3748)
= Elasticsearch X-Pack A set of Elastic's commercial plugins for Elasticsearch: - License - Security - Watcher - Monitoring - Machine Learning - Graph = Setup You must checkout `x-pack-elasticsearch` and `elasticsearch` with a specific directory structure. The `elasticsearch` checkout will be used when building `x-pack-elasticsearch`. The structure is: - /path/to/elastic/elasticsearch - /path/to/elastic/elasticsearch-extra/x-pack-elasticsearch == Vault Secret The build requires a Vault Secret ID. You can use a GitHub token by following these steps: 1. Go to https://github.com/settings/tokens 2. Click *Generate new token* 3. Set permissions to `read:org` 4. Copy the token into `~/.elastic/github.token` 5. Set the token's file permissions to `600` ``` $ mkdir ~/.elastic $ vi ~/.elastic/github.token # Add your_token exactly as it is into the file and save it $ chmod 600 ~/.elastic/github.token ``` If you do not create the token, then you will see something along the lines of this as the failure when trying to build X-Pack: ``` * What went wrong: Missing ~/.elastic/github.token file or VAULT_SECRET_ID environment variable, needed to authenticate with vault for secrets ``` === Offline Mode When running the build in offline mode (`--offline`), it will not required to have the vault secret setup. == Native Code **This is mandatory as tests depend on it** Machine Learning requires platform specific binaries, build from https://github.com/elastic/machine-learning-cpp via CI servers. The native artifacts are stored in S3. To retrieve them infra's team Vault service is utilized, which requires a github token. Please setup a github token as documented: https://github.com/elastic/infra/blob/master/docs/vault.md#github-auth The github token has to be put into ~/.elastic/github.token, while the file rights must be set to 0600. = Build - Run unit tests: + [source, txt] ----- gradle clean test ----- - Run all tests: + [source, txt] ----- gradle clean check ----- - Run integration tests: + [source, txt] ----- gradle clean integTest ----- - Package X-Pack (without running tests) + [source, txt] ----- gradle clean assemble ----- - Install X-Pack (without running tests) + [source, txt] ----- gradle clean install ----- = Building documentation The source files in this repository can be included in either the X-Pack Reference or the Elasticsearch Reference. NOTE: In 5.5 and later, the Elasticsearch Reference includes X-Pack-specific content when it is built from this repo. To build the Elasticsearch Reference on your local machine: * Use the `index.asciidoc` file in the docs/en directory. * Specify the location of the `elasticsearch/docs` directory with the `--resource` option when you run `build_docs.pl`. For example: [source, txt] ----- ./docs/build_docs.pl --doc elasticsearch-extra/x-pack-elasticsearch/docs/en/index.asciidoc --resource=elasticsearch/docs --chunk 1 ----- For information about building the X-Pack Reference, see the README in the x-pack repo. To build a release notes page for the pull requests in this repository: * Use the dev-tools/xes-release-notes.pl script to pull PRs from the x-pack-elasticsearch repo. Alternatively, use the dev-tools/xescpp_release_notes.pl script to pull PRs from both the x-pack-elasticsearch and machine-learning-cpp repos. * Specify the version label for which you want the release notes. * Redirect the output to a new local file. NOTE: You must have a personal access token called ~/.github_auth with "repo" scope. Use steps similar to "Vault Secret" to create this file. For example: [source, txt] ----- ./dev-tools/xes_release_notes.pl v5.5.2 > ~/tmp/5.5.2.asciidoc ----- == Adding Images When you include an image in the documentation, specify the path relative to the location of the asciidoc file. By convention, we put images in an `images` subdirectory. For example to insert `watcher-ui-edit-watch.png` in `watcher/limitations.asciidoc`: . Add an `images` subdirectory to the watcher directory if it doesn't already exist. . In `limitations.asciidoc` specify: + [source, txt] ----- image::images/watcher-ui-edit-watch.png["Editing a watch"] ----- Please note that image names and anchor IDs must be unique within the book, so do not use generic identifiers.
Description
Languages
Java
99.5%
Groovy
0.4%