You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Linq4j BlockBuilder incorrectly inlines a variable that might be assigned more than once along a code path. For example, in
longx = 0;
finallongy = System.currentTimeMillis();
if (System.nanoTime() > 0L) {
x = y;
}
it incorrectly inlines x, to yield
if (System.nanoTime() > 0L) {
System.currentTimeMillis();
}
The fix is to only inline variables that are marked 'final'. The java compiler will ensure that they cannot be assigned more than once (by any code path) and cannot be read before they have been initialized.
This change may break code that relies on Linq4j inlining effectively final (but not explicitly final) variables.
The text was updated successfully, but these errors were encountered:
julianhyde
changed the title
Variable assigned in 'if' or 'for' incorrectly inlined
Incorrectly inlines non-final variable
May 28, 2014
…RANK windowed aggregate function".
Changes to the `AggImplementor` and `WinAggImplementor` interfaces to provide richer context to user code implementing a (windowed) aggregate function.
RelDataType instances created via built-in type strategies are now NOW NULL. Add 'boolean nullable' parameter to RelDataTypeImpl.proto methods.
Upgrade to linq4j-0.4, and add 'final' to code-generator variables, per julianhyde/linq4j#27.
ldming
pushed a commit
to ldming/mycalcite
that referenced
this issue
Sep 13, 2018
…RANK windowed aggregate function".
Changes to the `AggImplementor` and `WinAggImplementor` interfaces to provide richer context to user code implementing a (windowed) aggregate function.
RelDataType instances created via built-in type strategies are now NOW NULL. Add 'boolean nullable' parameter to RelDataTypeImpl.proto methods.
Upgrade to linq4j-0.4, and add 'final' to code-generator variables, per julianhyde/linq4j#27.
Linq4j BlockBuilder incorrectly inlines a variable that might be assigned more than once along a code path. For example, in
it incorrectly inlines
x
, to yieldThe fix is to only inline variables that are marked 'final'. The java compiler will ensure that they cannot be assigned more than once (by any code path) and cannot be read before they have been initialized.
This change may break code that relies on Linq4j inlining effectively final (but not explicitly final) variables.
The text was updated successfully, but these errors were encountered: