Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle 'wrong symbol )' exception in case of comparision field with nil or {} on nonindexed column #422

Closed
vasilevichra opened this issue Mar 4, 2024 · 0 comments · Fixed by #425
Assignees
Labels
1sp bug Something isn't working customer teamE

Comments

@vasilevichra
Copy link

Please wrap a meaningless exception with something like this:

Please add index on column bla-bla like COMMAND

@DifferentialOrange DifferentialOrange self-assigned this Mar 11, 2024
@DifferentialOrange DifferentialOrange added bug Something isn't working customer 1sp labels Mar 11, 2024
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
There seem to be no reason to determine features on request instead of
require since this operation is cheap.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Generate `tarantool_supports_X` utils instead of creating a manual
function for each key with copypaste.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
`pcall(require, module)` check is insufficient for external types
since module presence often precedes box format support and index
support for a type. Sometimes the nature of the module may change
between versions: for example, there is a `'uuid'` module in 1.10.x,
but a separate type was introduced only in 2.4.1

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 15, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
Test scenarios which imitate "server fail" leave test cluster
malfunctioning even in cartridge case.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
Generate `tarantool_supports_X` utils instead of creating a manual
function for each key with copypaste.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
`pcall(require, module)` check is insufficient for external types
since module presence often precedes box format support and index
support for a type. Sometimes the nature of the module may change
between versions: for example, there is a `'uuid'` module in 1.10.x,
but a separate type was introduced only in 2.4.1

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
Test scenarios which imitate "server fail" leave test cluster
malfunctioning even in cartridge case.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 18, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Mar 20, 2024
There seem to be no reason to determine features on request instead of
require since this operation is cheap.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 20, 2024
Generate `tarantool_supports_X` utils instead of creating a manual
function for each key with copypaste.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 20, 2024
`pcall(require, module)` check is insufficient for external types
since module presence often precedes box format support and index
support for a type. Sometimes the nature of the module may change
between versions: for example, there is a `'uuid'` module in 1.10.x,
but a separate type was introduced only in 2.4.1

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 20, 2024
Test scenarios which imitate "server fail" leave test cluster
malfunctioning even in cartridge case.

Part of #422
DifferentialOrange added a commit that referenced this issue Mar 20, 2024
Before this patch, some nil conditions failed with internal filter
library build error. This patch fixes this internal error, as well as
normalize filters to behave similar to core indexes.

The logic in core Tarantool select is as follows. `nil` condition in
index select is an absence of condition, thus all data is returned
disregarding the condition (condition may affect the order). `box.NULL`
condition is a condition for the null value -- in case of EQ,
only records with null index value are returned, in case of GT,
all non-null values are returned since nulls are in the beginning of an
index and so on. `nil`s and `box.NULL`s in tuple are both satisfy
`box.NULL` equity.

After this patch, `nil` filter condition is treated as no condition.
This is a breaking change since conditions for `'>'` and `'<'`
operator with `nil` operand had resulted with empty response
before this patch. But since it was inconsistent with scanning index
conditions and wasn't intentional, we change it here.

Closes #422
DifferentialOrange added a commit that referenced this issue Apr 3, 2024
Overview

  This release introduces roles for Tarantool 3 configuration (supported
  for versions 3.0.2, 3.1.0 and newer).

Added
* Asynchronous bootstrap support for storages (#412).
* Tarantool 3 roles for setting up crud routers and storages (#415).
* Ability to configure crud through Tarantool 3 roles
  configuration (#415).

Changed
* Explicitly forbid datetime interval conditions (#373).
* Storage initialization is now asynchronous by default for
  Tarantool 3.0+ (#412).
* Additionally check backoff error on storage info fetch (#427).

Fixed
* Working with datetime conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Precision loss for decimal conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Passing errors from storages for merger operations (`crud.select`,
  `crud.pairs`, `readview:select`, `readview:pairs`) (#423).
* Working with `nil` operand conditions in case of non-indexed fields or
  non-iterating indexes (#422).
DifferentialOrange added a commit that referenced this issue Apr 4, 2024
Overview

  This release introduces roles for Tarantool 3 configuration (supported
  for versions 3.0.2, 3.1.0 and newer).

Added
* Asynchronous bootstrap support for storages (#412).
* Tarantool 3 roles for setting up crud routers and storages (#415).
* Ability to configure crud through Tarantool 3 roles
  configuration (#415).

Changed
* Explicitly forbid datetime interval conditions (#373).
* Storage initialization is now asynchronous by default for
  Tarantool 3.0+ (#412).
* Additionally check backoff error on storage info fetch (#427).

Fixed
* Working with datetime conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Precision loss for decimal conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Passing errors from storages for merger operations (`crud.select`,
  `crud.pairs`, `readview:select`, `readview:pairs`) (#423).
* Working with `nil` operand conditions in case of non-indexed fields or
  non-iterating indexes (#422).
DifferentialOrange added a commit that referenced this issue May 20, 2024
Overview

  This release introduces roles for Tarantool 3 configuration (supported
  for versions 3.0.2, 3.1.0 and newer).

Added
* Asynchronous bootstrap support for storages (#412).
* Tarantool 3 roles for setting up crud routers and storages (#415).
* Ability to configure crud through Tarantool 3 roles
  configuration (#415).

Changed
* Explicitly forbid datetime interval conditions (#373).
* Storage initialization is now asynchronous by default for
  Tarantool 3.0+ (#412).
* Additionally check backoff error on storage info fetch (#427).

Fixed
* Working with datetime conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Precision loss for decimal conditions in case of non-indexed fields or
  non-iterating indexes (#373).
* Passing errors from storages for merger operations (`crud.select`,
  `crud.pairs`, `readview:select`, `readview:pairs`) (#423).
* Working with `nil` operand conditions in case of non-indexed fields or
  non-iterating indexes (#422).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1sp bug Something isn't working customer teamE
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants