..  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.

.. _cache_props:

================
Cache Properties
================

The :mod:`~pyignite.datatypes.prop_codes` module contains a list of ordinal
values, that represent various cache settings.

Please refer to the `Configuring Caches`_ documentation on cache
synchronization, rebalance, affinity and other cache configuration-related
matters.

+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| Property                              | Ordinal  | Property                                                   | Description                                           |
| name                                  | value    | type                                                       |                                                       |
+=======================================+==========+============================================================+=======================================================+
| Read/write cache properties, used to configure cache via :py:meth:`~pyignite.client.Client.create_cache` or                                                           |
| :py:meth:`~pyignite.client.Client.get_or_create_cache` of :py:class:`~pyignite.client.Client`                                                                         |
| (:py:meth:`~pyignite.aio_client.AioClient.create_cache` or                                                                                                            |
| :py:meth:`~pyignite.aio_client.AioClient.get_or_create_cache` of :py:class:`~pyignite.aio_client.AioClient`).                                                         |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_NAME                             |        0 | str                                                        | Cache name. This is the only *required* property.     |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_CACHE_MODE                       |        1 | int                                                        | Cache mode: LOCAL=0, REPLICATED=1, PARTITIONED=2      |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_CACHE_ATOMICITY_MODE             |        2 | int                                                        | Cache atomicity mode: TRANSACTIONAL=0, ATOMIC=1       |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_BACKUPS_NUMBER                   |        3 | int                                                        | Number of backups                                     |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_WRITE_SYNCHRONIZATION_MODE       |        4 | int                                                        | Write synchronization mode: FULL_SYNC=0,              |
|                                       |          |                                                            | FULL_ASYNC=1, PRIMARY_SYNC=2                          |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_COPY_ON_READ                     |        5 | bool                                                       | Copy-on-read                                          |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_READ_FROM_BACKUP                 |        6 | bool                                                       | Read from backup                                      |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_DATA_REGION_NAME                 |      100 | str                                                        | Data region name                                      |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_IS_ONHEAP_CACHE_ENABLED          |      101 | bool                                                       | Is OnHeap cache enabled?                              |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_QUERY_ENTITIES                   |      200 | list                                                       | A list of query entities (see `Query entity`_)        |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_QUERY_PARALLELISM                |      201 | int                                                        | Query parallelism                                     |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_QUERY_DETAIL_METRIC_SIZE         |      202 | int                                                        | Query detail metric size                              |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_SQL_SCHEMA                       |      203 | str                                                        | SQL schema                                            |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_SQL_INDEX_INLINE_MAX_SIZE        |      204 | int                                                        | SQL index inline maximum size                         |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_SQL_ESCAPE_ALL                   |      205 | bool                                                       | Turns on SQL escapes                                  |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_MAX_QUERY_ITERATORS              |      206 | int                                                        | Maximum number of query iterators                     |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_MODE                   |      300 | int                                                        | Rebalance mode: SYNC=0, ASYNC=1, NONE=2               |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_DELAY                  |      301 | int                                                        | Rebalance delay (ms)                                  |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_TIMEOUT                |      302 | int                                                        | Rebalance timeout (ms)                                |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_BATCH_SIZE             |      303 | int                                                        | Rebalance batch size                                  |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_BATCHES_PREFETCH_COUNT |      304 | int                                                        | Rebalance batches prefetch count                      |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_ORDER                  |      305 | int                                                        | Rebalance order                                       |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_REBALANCE_THROTTLE               |      306 | int                                                        | Rebalance throttle (ms)                               |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_GROUP_NAME                       |      400 | str                                                        | Group name                                            |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_CACHE_KEY_CONFIGURATION          |      401 | list                                                       | Cache key configuration (see `Cache key`_)            |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_DEFAULT_LOCK_TIMEOUT             |      402 | int                                                        | Default lock timeout (ms)                             |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_MAX_CONCURRENT_ASYNC_OPERATIONS  |      403 | int                                                        | Maximum number of concurrent asynchronous operations  |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_PARTITION_LOSS_POLICY            |      404 | int                                                        | Partition loss policy: READ_ONLY_SAFE=0,              |
|                                       |          |                                                            | READ_ONLY_ALL=1, READ_WRITE_SAFE=2, READ_WRITE_ALL=3, |
|                                       |          |                                                            | IGNORE=4                                              |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_EAGER_TTL                        |      405 | bool                                                       | Eager TTL                                             |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_STATISTICS_ENABLED               |      406 | bool                                                       | Statistics enabled                                    |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+
| PROP_EXPIRY_POLICY                    |      407 | :py:class:`~pyignite.datatypes.expiry_policy.ExpiryPolicy` |  Set expiry policy (see `Expiry policy`_)             |
+---------------------------------------+----------+------------------------------------------------------------+-------------------------------------------------------+

Query entity
------------

A dict with all ot the following keys:

- `table_name`: SQL table name,
- `key_field_name`: name of the key field,
- `key_type_name`: name of the key type (Java type or complex object),
- `value_field_name`: name of the value field,
- `value_type_name`: name of the value type,
- `field_name_aliases`: a list of 0 or more dicts of aliases
  (see `Field name alias`_),
- `query_fields`: a list of 0 or more query field names (see `Query field`_),
- `query_indexes`: a list of 0 or more query indexes (see `Query index`_).

Field name alias
================

- `field_name`: field name,
- `alias`: alias (str).

Query field
===========

- `name`: field name,
- `type_name`: name of Java type or complex object,
- `is_key_field`: (optional) boolean value, `False` by default,
- `is_notnull_constraint_field`: boolean value,
- `default_value`: (optional) anything that can be converted to `type_name`
  type. `None` (:py:class:`~pyignite.datatypes.null_object.Null`) by default,
- `precision` − (optional) decimal precision: total number of digits
  in decimal value. Defaults to -1 (use cluster default). Ignored for
  non-decimal SQL types (other than `java.math.BigDecimal`),
- `scale` − (optional) decimal precision: number of digits after the decimal
  point. Defaults to -1 (use cluster default). Ignored for non-decimal SQL
  types.

Query index
===========

- `index_name`: index name,
- `index_type`: index type code as an integer value in unsigned byte range,
- `inline_size`: integer value,
- `fields`: a list of 0 or more indexed fields (see `Fields`_).

Fields
======

- `name`: field name,
- `is_descending`: (optional) boolean value, `False` by default.

Cache key
---------

A dict of the following format:

- `type_name`: name of the complex object,
- `affinity_key_field_name`: name of the affinity key field.

.. _Configuring Caches: https://ignite.apache.org/docs/latest/configuring-caches/configuration-overview.html

Expiry policy
-------------

Set expiry policy to cache (see :py:class:`~pyignite.datatypes.expiry_policy.ExpiryPolicy`). If set to `None`,
expiry policy will not be set.
