Clone
Ali Alsuliman <ali.al.solaiman@gmail.com>
committed
on 30 Jul
[ASTERIXDB-2615][*DB] Enable constant folding rule to determine when to fold
- user model changes: no
- storage format changes: no
- interfa… Show more
[ASTERIXDB-2615][*DB] Enable constant folding rule to determine when to fold

- user model changes: no

- storage format changes: no

- interface changes: no

Details:

Currently, some functions are excluded from being evaluated at compile time in

constant folding rule. Those functions are maintained in a set. The reason for

excluding them is because they can produce records/lists in their "open" format

and constant folding them will make them "closed" which would lead to incorrect

results. Any time a new function is implemented, the developer would have to pay

attention and add their functions if they should be excluded, too.

The exclusion set should be removed. The constant folding rule should determine

from the output type of the function whether it can/should be folded or not.

- fixed an issue with StaticTypeCastUtil where it would not open up a field

 when that field's value is a function call.

- modified casting items of lists to avoid casting open the item when it is

 already in the opened up format.

- modified the type computer of object_remove_fields to handle constant

 arguments (the 2nd argument which is the name of the fields) since the

 argument can be constant folded now.

- modified field-access-by-index to handle evaluating it at compile time

 (by constant folding rule) in the case where the object accessed is missing

 (or non-object)

Change-Id: I3964aa8accaaae3b4c5c7ddf928e6cbd73d517f6

Reviewed-on: https://asterix-gerrit.ics.uci.edu/3509

Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>

Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>

Show less