org.apache.ignite.cache.query.annotations

## Annotation Type QuerySqlField

    @Documented
     @Retention(value=RUNTIME)
     @Target(value=FIELD)
    public @interface QuerySqlField

Annotates fields for SQL queries. All fields that will be involved in SQL clauses must have this annotation. For more information about cache queries see `CacheQuery` documentation.

See Also:
  `CacheQuery`

### Optional Element Summary

Optional Elements
`boolean` `descending` Specifies whether index should be in descending order or not.
`String[]` `groups` Array of index groups this field belongs to.
`boolean` `index` Specifies whether cache should maintain an index for this field or not.
`int` `inlineSize` Index inline size in bytes.
`String` `name` Property name.
`boolean` `notNull` Specifies whether the specified field can be `null`.
`QuerySqlField.Group[]` `orderedGroups` Array of ordered index groups this field belongs to.
`int` `precision` Specifies field precision for variable length types - decimal, string and byte array.
`int` `scale` Specifies scale for a decimal field.

### Element Detail

#### index

    public abstract boolean index

Specifies whether cache should maintain an index for this field or not. Just like with databases, field indexing may require additional overhead during updates, but makes select operations faster.

When indexing SPI and indexed field is of type `org.locationtech.jts.geom.Geometry` (or any subclass of this class) then Ignite will consider this index as spatial providing performance boost for spatial queries.

Returns:
  `True` if index must be created for this field in database.

Default:
  false

#### descending

    public abstract boolean descending

Specifies whether index should be in descending order or not. This property only makes sense if `index()` property is set to `true`.

Returns:
  `True` if field index should be in descending order.

Default:
  false

#### notNull

    public abstract boolean notNull

Specifies whether the specified field can be `null`.

Returns:
  `True` if the field is not allowed to accept `null` values.

Default:
  false

#### precision

    public abstract int precision

Specifies field precision for variable length types - decimal, string and byte array.

Returns:
  field precision for variable length types - decimal, string and byte array.

Default:
  -1

#### scale

    public abstract int scale

Specifies scale for a decimal field.

Returns:
  scale for a decimal field.

Default:
  -1

#### groups

    public abstract String[] groups

Array of index groups this field belongs to. Groups are used for compound indexes, whenever index should be created on more than one field. All fields within the same group will belong to the same index.

Group indexes are needed because SQL engine can utilize only one index per table occurrence in a query. For example if we have two separate indexes on fields `a` and `b` of type `X` then query `select * from X where a = ? and b = ?` will use for filtering either index on field `a` or `b` but not both. For more effective query execution here it is preferable to have a single group index on both fields.

For more complex scenarios please refer to `QuerySqlField.Group` documentation.

Returns:
  Array of group names.

Default:
  {}

#### orderedGroups

    public abstract QuerySqlField.Group[] orderedGroups

Array of ordered index groups this field belongs to. For more information please refer to QuerySqlField.Group documentation.

Returns:
  Array of ordered group indexes.
See Also:
  `groups()`

Default:
  {}

#### name

    public abstract String name

Property name. If not provided then field name will be used.

Returns:
  Name of property.

Default:
  ""

#### inlineSize

    public abstract int inlineSize

Index inline size in bytes. When enabled part of indexed value will be placed directly to index pages, thus minimizing data page accesses, thus incraesing query performance.

Allowed values:

- `-1` (default) - determine inline size automatically (see below)
- `0` - index inline is disabled (not recommended)
- positive value - fixed index inline

When set to `-1`, Ignite will try to detect inline size automatically. It will be no more than `CacheConfiguration.getSqlIndexMaxInlineSize()`. Index inline will be enabled for all fixed-length types, but will not be enabled for `String`.

When index group is used, inline size must be defined in `QueryGroupIndex.inlineSize()`. Any value except of `-1` defined on a specific column will lead to exception.

Returns:
  Index inline size in bytes.

Default:
  -1

${current.year} Copyright © Apache Software Foundation

Follow @ApacheIgnite

Ignite Database and Caching Platform | : ver. 2.16.0
Release Date | : December 15 2023