diff --git a/docs/en/operations/query-cache.md b/docs/en/operations/query-cache.md index d0b785d8fda..137ebf8ad85 100644 --- a/docs/en/operations/query-cache.md +++ b/docs/en/operations/query-cache.md @@ -136,8 +136,24 @@ As a result, the query cache stores for each query multiple (partial) result blocks. While this behavior is a good default, it can be suppressed using setting [query_cache_squash_partial_query_results](settings/settings.md#query-cache-squash-partial-query-results). -Also, results of queries with non-deterministic functions such as `rand()` and `now()` are not cached. This can be overruled using -setting [query_cache_store_results_of_queries_with_nondeterministic_functions](settings/settings.md#query-cache-store-results-of-queries-with-nondeterministic-functions). +Also, results of queries with non-deterministic functions are not cached. Such functions include +- functions for accessing dictionaries: [`dictGet()`](../sql-reference/functions/ext-dict-functions.md#dictGet) etc. +- [user-defined functions](../sql-reference/statements/create/function.md), +- functions which return the current date or time: [`now()`](../sql-reference/functions/date-time-functions.md#now), + [`today()`](../sql-reference/functions/date-time-functions.md#today), + [`yesterday()`](../sql-reference/functions/date-time-functions.md#yesterday) etc., +- functions which return random values: [`randomString()`](../sql-reference/functions/random-functions.md#randomString), + [`fuzzBits()`](../sql-reference/functions/random-functions.md#fuzzBits) etc., +- functions whose result depends on the size and order or the internal chunks used for query processing: + [`nowInBlock()`](../sql-reference/functions/date-time-functions.md#nowInBlock) etc., + [`rowNumberInBlock()`](../sql-reference/functions/other-functions.md#rowNumberInBlock), + [`runningDifference()`](../sql-reference/functions/other-functions.md#runningDifference), + [`blockSize()`](../sql-reference/functions/other-functions.md#blockSize) etc., +- functions which depend on the environment: [`currentUser()`](../sql-reference/functions/other-functions.md#currentUser), + [`queryID()`](../sql-reference/functions/other-functions.md#queryID), + [`getMacro()`](../sql-reference/functions/other-functions.md#getMacro) etc. +Caching of non-deterministic functions can be forced regardless using setting +[query_cache_store_results_of_queries_with_nondeterministic_functions](settings/settings.md#query-cache-store-results-of-queries-with-nondeterministic-functions). Finally, entries in the query cache are not shared between users due to security reasons. For example, user A must not be able to bypass a row policy on a table by running the same query as another user B for whom no such policy exists. However, if necessary, cache entries can diff --git a/docs/en/sql-reference/functions/date-time-functions.md b/docs/en/sql-reference/functions/date-time-functions.md index 197894d29d9..d3b39dd4147 100644 --- a/docs/en/sql-reference/functions/date-time-functions.md +++ b/docs/en/sql-reference/functions/date-time-functions.md @@ -1274,7 +1274,7 @@ Alias: `SUBDATE` **See Also** - [date_sub](#date_sub) -## now +## now {#now} Returns the current date and time at the moment of query analysis. The function is a constant expression. @@ -1361,7 +1361,7 @@ Result: └─────────────────────────┴───────────────────────────────┘ ``` -## nowInBlock +## nowInBlock {#nowInBlock} Returns the current date and time at the moment of processing of each block of data. In contrast to the function [now](#now), it is not a constant expression, and the returned value will be different in different blocks for long-running queries. @@ -1405,14 +1405,14 @@ Result: └─────────────────────┴─────────────────────┴──────────┘ ``` -## today +## today {#today} Accepts zero arguments and returns the current date at one of the moments of query analysis. The same as ‘toDate(now())’. Aliases: `curdate`, `current_date`. -## yesterday +## yesterday {#yesterday} Accepts zero arguments and returns yesterday’s date at one of the moments of query analysis. The same as ‘today() - 1’. diff --git a/docs/en/sql-reference/functions/ext-dict-functions.md b/docs/en/sql-reference/functions/ext-dict-functions.md index 284d6d80405..4149afce044 100644 --- a/docs/en/sql-reference/functions/ext-dict-functions.md +++ b/docs/en/sql-reference/functions/ext-dict-functions.md @@ -12,7 +12,7 @@ For dictionaries created with [DDL queries](../../sql-reference/statements/creat For information on connecting and configuring dictionaries, see [Dictionaries](../../sql-reference/dictionaries/index.md). -## dictGet, dictGetOrDefault, dictGetOrNull +## dictGet, dictGetOrDefault, dictGetOrNull {#dictGet} Retrieves values from a dictionary. diff --git a/docs/en/sql-reference/functions/other-functions.md b/docs/en/sql-reference/functions/other-functions.md index bfbd26551d3..566eff76584 100644 --- a/docs/en/sql-reference/functions/other-functions.md +++ b/docs/en/sql-reference/functions/other-functions.md @@ -11,7 +11,7 @@ sidebar_label: Other Returns the name of the host on which this function was executed. If the function executes on a remote server (distributed processing), the remote server name is returned. If the function executes in the context of a distributed table, it generates a normal column with values relevant to each shard. Otherwise it produces a constant value. -## getMacro +## getMacro {#getMacro} Returns a named value from the [macros](../../operations/server-configuration-parameters/settings.md#macros) section of the server configuration. @@ -186,7 +186,7 @@ Returns the type name of the passed argument. If `NULL` is passed, then the function returns type `Nullable(Nothing)`, which corresponds to ClickHouse's internal `NULL` representation. -## blockSize() +## blockSize() {#blockSize} In ClickHouse, queries are processed in blocks (chunks). This function returns the size (row count) of the block the function is called on. @@ -311,7 +311,7 @@ Sleeps ‘seconds’ seconds for each row. The sleep time can be specified as in Returns the name of the current database. Useful in table engine parameters of `CREATE TABLE` queries where you need to specify the database. -## currentUser() +## currentUser() {#currentUser} Returns the name of the current user. In case of a distributed query, the name of the user who initiated the query is returned. @@ -771,7 +771,7 @@ If executed in the context of a distributed table, this function generates a nor Returns the sequence number of the data block where the row is located. -## rowNumberInBlock() +## rowNumberInBlock() {#rowNumberInBlock} Returns the ordinal number of the row in the data block. Different data blocks are always recalculated. @@ -896,7 +896,7 @@ Result: └────────────┴───────┴───────────┴────────────────┘ ``` -## runningDifference(x) +## runningDifference(x) {#runningDifference} Calculates the difference between two consecutive row values in the data block. Returns 0 for the first row, and for subsequent rows the difference to the previous row. @@ -2274,7 +2274,7 @@ Result: └───────────────────────────┘ ``` -## queryID +## queryID {#queryID} Returns the ID of the current query. Other parameters of a query can be extracted from the [system.query_log](../../operations/system-tables/query_log.md) table via `query_id`. diff --git a/docs/en/sql-reference/functions/random-functions.md b/docs/en/sql-reference/functions/random-functions.md index e593d9458f0..13c29329f41 100644 --- a/docs/en/sql-reference/functions/random-functions.md +++ b/docs/en/sql-reference/functions/random-functions.md @@ -478,7 +478,7 @@ Result: └─────────────────────┘ ``` -## randomString +## randomString {#randomString} Generates a string of the specified length filled with random bytes (including zero bytes). Not all characters may be printable. @@ -627,7 +627,7 @@ Result: └──────────────────────┘ ``` -## fuzzBits +## fuzzBits {#fuzzBits} **Syntax**