Project

General

Profile

Activity

From 01/28/2025 to 02/26/2025

02/26/2025

05:36 PM Bug #9669: Optimize RecordMeta.applyInitialValues
Alexandru Lungu wrote:
> ** Anyway, I think this approach is not completely right because you presume that the @dyna...
Artur Școlnic
09:12 AM Bug #9669: Optimize RecordMeta.applyInitialValues
> Please post the test-cases you built for testing 9669a.
As part of 9669a review:
* There is a misalignment of...
Alexandru Lungu
05:58 AM Bug #9669 (WIP): Optimize RecordMeta.applyInitialValues
> Considering the nature of the changes, I went ahead with the testing, FwdTests and 2 large customer application uni... Alexandru Lungu
03:02 AM Bug #9669: Optimize RecordMeta.applyInitialValues
Considering the nature of the changes, I went ahead with the testing, FwdTests and 2 large customer application unit ... Artur Școlnic
04:49 PM Bug #9683: CompoundQuery is doing extra hydration attempts
I committed an early implementation for the RetrieveResults, the code is in 9683a/15725. Code formatting, javadoc and... Artur Școlnic
09:14 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
OK Greg Shah
09:07 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I just used the @assert@ to validate that I get the same results with the new implementation vs the old one while run... Andrei Plugaru
09:05 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
> Assert as in @assert@ statement from Java. If so, did you run the Java process with @-ea@ to activate it? Personall... Greg Shah
07:57 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Alexandru Lungu wrote:
> Assert as in @assert@ statement from Java. If so, did you run the Java process with @-ea@ t...
Andrei Plugaru
07:52 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
> So, I think I will abandon the idea to override equals, and, simply create another method which will do this checki... Alexandru Lungu
07:30 AM Bug #9701 (Review): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality...
*I committed @9701a/15735@.* As I said in the last note, I just created a new method in @Record@ to check if the data... Andrei Plugaru
06:32 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
@equals@ is used explicitly only there, however I just realised it could be used as key in collections like @Set@ or ... Andrei Plugaru
06:21 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
> I actually found just one usage of Record.equals in LocalSyncher.preSynch: if (foreignDMO null || foreignDMO.equals... Alexandru Lungu
06:13 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Alexandru Lungu wrote:
> * Please investigate if there are @equals@ comparisons of @BaseRecord@ across FWD.
==
I a...
Andrei Plugaru
04:57 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
> At the moment, I am thinking of overriding the equals in BaseRecord and make it check the elements in data array. I... Alexandru Lungu
04:23 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I found this note in @CompareOps.equals@: @// special case: an empty comhandle is considered be equal to the zero int... Andrei Plugaru
03:32 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
At the moment, I am thinking of overriding the @equals@ in @BaseRecord@ and make it check the elements in data array.... Andrei Plugaru
08:13 AM Feature #9093 (Internal Test): add protection for multi-tenant imports to optionally only import ...
Ovidiu Maxiniuc wrote:
> [...]
> I committed the changes and rebased the branch to latest trunk. Current revision i...
Eric Faulhaber
05:54 AM Bug #9667 (Test): Bottleneck in BaseRecord.getActiveUpdateDiffs
Alexandru Lungu
05:45 AM Bug #9667: Bottleneck in BaseRecord.getActiveUpdateDiffs
Branch 9667a was merged into trunk as rev. 15737 and archived. Artur Școlnic
04:58 AM Bug #9667 (Merge Pending): Bottleneck in BaseRecord.getActiveUpdateDiffs
Please merge 9667a to trunk after 9615a. Alexandru Lungu
02:53 AM Bug #9667: Bottleneck in BaseRecord.getActiveUpdateDiffs
Alexandru Lungu wrote:
> Afterwards:
> * 2 large customer application unit tests and ChUI regression tests.
All ...
Artur Școlnic

02/25/2025

05:07 PM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
Eric Faulhaber wrote:
> Code review 9093a/15727-15728:
>
> For a small update, this took me several read-throughs...
Ovidiu Maxiniuc
03:16 PM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
Code review 9093a/15727-15728:
For a small update, this took me several read-throughs to comprehend. However, I th...
Eric Faulhaber
01:37 PM Bug #9669: Optimize RecordMeta.applyInitialValues
Committed a small change to rev 15719. Artur Școlnic
05:17 AM Bug #9669 (Review): Optimize RecordMeta.applyInitialValues
I addressed the review, the code is in rev 15718. Artur Școlnic
03:34 AM Bug #9669: Optimize RecordMeta.applyInitialValues
> My goal was to store the initial non null values, in case this bitset could be used in the future, but storing null... Alexandru Lungu
03:10 AM Bug #9669: Optimize RecordMeta.applyInitialValues
Alexandru Lungu wrote:
> * @flip@ operation seems redundant. Instead of @or@-ing with @initialDataBitSet@ and then f...
Artur Școlnic
10:36 AM Feature #6720: lazy hydration
> This affirmation is correct for the "new buffer", but not for the "old buffer". The old buffer stores a snapshot of... Greg Shah
09:42 AM Feature #6720: lazy hydration
> Probably we'll have to do a full hydration of the record at the moment a missing property is accessed during the ex... Andrei Plugaru
09:03 AM Feature #6720: lazy hydration
Creating the snapshot of a partially-hydrated record will take only the information available at that time. I do not ... Ovidiu Maxiniuc
08:41 AM Feature #6720: lazy hydration
> Are we adding implicit accesses (in our runtime) to fields that are not otherwise accessed explicitly in the 4GL co... Alexandru Lungu
08:30 AM Feature #6720: lazy hydration
Are we adding implicit accesses (in our runtime) to fields that are not otherwise accessed explicitly in the 4GL code... Greg Shah
06:48 AM Feature #6720: lazy hydration
Andrei, I just found another usage of @snapshot@. A so called @armCurrentChanged@ that can be triggered if you run a ... Alexandru Lungu
06:38 AM Feature #6720: lazy hydration
Starting from the testcase in the last note, Alex and I analyzed more @RecordBuffer.armWriteTrigger@ method.
We an...
Andrei Plugaru
04:34 AM Feature #6720: lazy hydration
I have finished the testcase from #6720-113 to have the hydrator invalidated and also modifying the record in the DB ... Andrei Plugaru
03:27 AM Feature #6720: lazy hydration
> In the last find next query it has as placeholder an unhydrated record. I think this could be prone to errors if th... Alexandru Lungu
02:11 AM Feature #6720: lazy hydration
I am further investigating the regressions on the FWD tests. I still think that the root issue could be related to th... Andrei Plugaru
09:58 AM Bug #9701 (WIP): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Created branch @9701a@ from rev. 15734. Andrei Plugaru
06:04 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
In a profiled scenario (#9692), there are 3.5k @RecordBuffer.updateCurrentChanged@ calls. The DMOs used by this have ... Alexandru Lungu
05:50 AM Bug #9701 (Test): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality c...
Alexandru Lungu
07:04 AM Bug #9702: BaseRecord.getDirtyIndices is slow
PS: @BaseRecord.getUnvalidatedIndices@ seems to have a better performance, but for my tests this is called only 54k t... Alexandru Lungu
06:44 AM Bug #9702: BaseRecord.getDirtyIndices is slow
In a profiled scenario (#9692), there are 104k calls to @BaseRecord.getDirtyIndices@. The scenario is changing extent... Alexandru Lungu
06:20 AM Bug #9702 (New): BaseRecord.getDirtyIndices is slow
Alexandru Lungu
03:43 AM Bug #9667 (Internal Test): Bottleneck in BaseRecord.getActiveUpdateDiffs
The changes look functionally right. There are still some formatting issues:
* @validation.validateMaybeFlush();@ is...
Alexandru Lungu
03:16 AM Bug #9667 (Review): Bottleneck in BaseRecord.getActiveUpdateDiffs
I committed the changes to rev 15717. Artur Școlnic
03:11 AM Bug #9667: Bottleneck in BaseRecord.getActiveUpdateDiffs
I made the changes, considering that they are trivial, I will move on with testing. Artur Școlnic

02/24/2025

10:15 AM Bug #9670 (Test): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Branch 9670a was merged to trunk rev 15731 and archived. Andrei Iacob
10:07 AM Bug #9670 (Merge Pending): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Please merge to trunk now. Alexandru Lungu
09:52 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
I ran the unittest suite of a large customer, no issues.
Let me know when this can be merged.
Andrei Iacob
09:17 AM Bug #9670 (Internal Test): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
I am OK with the changes. Please do some slim testing to ensure there are no obvious issues. Alexandru Lungu
08:57 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Please update the branch now. Andrei Iacob
08:54 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
The latest rev. is still 15715. Alexandru Lungu
09:58 AM Feature #9305: Replace begins with interval based conditional
> I assume from these mixed results that you are testing this on an analyzed table with a lot of data. The PostgreSQL... Alexandru Lungu
09:49 AM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
I'll let Eric do the code review but from a user perspective, the changes look really good. Nice job! Greg Shah
09:25 AM Bug #9667 (WIP): Bottleneck in BaseRecord.getActiveUpdateDiffs
Review of 9667a:
* From @BaseRecord.getActiveUpdateDiffs@...
Alexandru Lungu
09:15 AM Bug #9669 (WIP): Optimize RecordMeta.applyInitialValues
Review of 9669a:
* @flip@ operation seems redundant. Instead of @or@-ing with @initialDataBitSet@ and then flip, p...
Alexandru Lungu
03:45 AM Bug #9697 (WIP): Use only indexed fields when performing record snapshot
Created @9697a@ based on rev. 15726. Andrei Plugaru
03:29 AM Bug #9697: Use only indexed fields when performing record snapshot
The scope of this task is to make @Record.snapshot@ use only the indexed fields.
The reason we got here is because o...
Andrei Plugaru
03:22 AM Bug #9697 (WIP): Use only indexed fields when performing record snapshot
Andrei Plugaru

02/22/2025

01:00 PM Feature #9093 (Review): add protection for multi-tenant imports to optionally only import tables ...
Please review. Ovidiu Maxiniuc
12:59 PM Feature #9093 (WIP): add protection for multi-tenant imports to optionally only import tables tha...
I did multiple tests with import from a multi-tenant enabled database. A first conclusion is that the database export... Ovidiu Maxiniuc

02/21/2025

04:47 PM Feature #9305: Replace begins with interval based conditional
Alexandru Lungu wrote:
> > Don't we need this to be (upper(rtrim(tt_1_1__im0_.f1)) in order to give the database a c...
Eric Faulhaber
10:48 AM Feature #9305: Replace begins with interval based conditional
> Don't we need this to be (upper(rtrim(tt_1_1__im0_.f1)) in order to give the database a chance to match an index? A... Alexandru Lungu
10:42 AM Feature #9305: Replace begins with interval based conditional
I was a bit puzzled why isn't @BEGIN@ implemented as an UDF?
I mean that was my first reaction, to see how @udf.begi...
Ovidiu Maxiniuc
10:17 AM Feature #9305: Replace begins with interval based conditional
Alexandru Lungu wrote:
> The conversion of a simple @find first tt where tt.f1 begins tst@ yields:
> [...]
>
> T...
Eric Faulhaber
08:49 AM Feature #9305: Replace begins with interval based conditional
The conversion of a simple @find first tt where tt.f1 begins tst@ yields:... Alexandru Lungu
10:35 AM Bug #9683 (WIP): CompoundQuery is doing extra hydration attempts
Regarding 9683a:
* for @collectRowData@, if the query is non-scrolling and off-end, the code still returns @new Obje...
Alexandru Lungu
09:06 AM Bug #9683 (Review): CompoundQuery is doing extra hydration attempts
Indeed there are callers of @processComponent@ and @collectRowData@ that do not use the row data, only the fact that ... Artur Școlnic
06:21 AM Bug #9683 (WIP): CompoundQuery is doing extra hydration attempts
Artur Școlnic
06:15 AM Bug #9683: CompoundQuery is doing extra hydration attempts
In a profiled scenario, when running a CompoundQuery, there are 63k calls to @Results.getRow@:
* 21.3k come from @Pr...
Alexandru Lungu
05:54 AM Bug #9683 (Review): CompoundQuery is doing extra hydration attempts
Alexandru Lungu
10:04 AM Feature #6720: lazy hydration
Andrei, having 9030b in trunk will be ideal, but I don't have enough focus and time to continue work onto that :/
P...
Alexandru Lungu
09:54 AM Feature #6720: lazy hydration
I did some investigation of the error I get in the FWD tests. The good news is that it seems that all have the same e... Andrei Plugaru
03:31 AM Feature #6720: lazy hydration
I have ran the FWD tests of another large customer application. Unfortunately, it shows some regressions :((
Howev...
Andrei Plugaru
09:35 AM Feature #9542 (Test): finish ORIGIN-HANDLE ProDataSet attribute
Branch 9544a which contains the changes from this task was merged into trunk as r15725 and then was archived. Ovidiu Maxiniuc
09:34 AM Feature #9544 (Test): implement missing SESSION handle attributes
Branch 9544a was merged into trunk as r15725 and then was archived. Ovidiu Maxiniuc
07:40 AM Feature #9544 (Merge Pending): implement missing SESSION handle attributes
Please merge to trunk. Greg Shah
08:55 AM Feature #7020: always use "expanded" extent fields
*7020c* was rebased to trunk *15724* and is now at revision *15748*. Stefanel Pezamosca
05:47 AM Bug #9669 (Review): Optimize RecordMeta.applyInitialValues
I fixed the issue, 9669a/15717 is ready for review. Artur Școlnic
04:04 AM Bug #9669 (WIP): Optimize RecordMeta.applyInitialValues
I did a bit of testing and found some regressions, will fix them. Artur Școlnic

02/20/2025

10:14 AM Bug #9669 (Review): Optimize RecordMeta.applyInitialValues
I committed the code to 9669a/15716, it is ready for review. Artur Școlnic
05:41 AM Bug #9669 (WIP): Optimize RecordMeta.applyInitialValues
Artur Școlnic
10:11 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Replaced @CREATE_DYN_TT.timer@ with @CREATE_DYN_TT.timerWithReturn@. Committed changes. Andrei Iacob
09:47 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
I am ok with the changes. One small change request:
* In @TempTableBuilder@, the @boolean[] res = new boolean[1];@ i...
Alexandru Lungu
04:05 AM Bug #9670 (Review): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Extended this refactor for @DynamicQueryHelper@ and @TempTableBuilder@.
Added changes to 9670a/15715.
Andrei Iacob
02:13 AM Bug #9670 (WIP): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Andrei Iacob
10:06 AM Feature #6720: lazy hydration
> Well, I made getLoadedFields return a BitSet with loaded fields. This makes integration in markIncomplete seamless.... Alexandru Lungu
09:54 AM Feature #6720: lazy hydration
Andrei Plugaru wrote:
> Yes, you are right, I will switch it back.
Done that in @6720b/15704@.
Andrei Plugaru
09:42 AM Feature #6720: lazy hydration
Alexandru Lungu wrote:
> > getLoadedFields
>
> Isn't this equivalent to the already existing @getProps@?
Well,...
Andrei Plugaru
09:22 AM Feature #6720: lazy hydration
> getLoadedFields
Isn't this equivalent to the already existing @getProps@?
> In BaseRecord.getUnhydratedFields...
Alexandru Lungu
09:06 AM Feature #6720: lazy hydration
*Committed @6720b/15703@ with the fix for the issue described in the last notes*. My approach was to create another m... Andrei Plugaru
09:01 AM Feature #6720: lazy hydration
Alexandru Lungu wrote:
> I think @readFields@ should be re-thinked a bit, because it has quite a weird integration w...
Eric Faulhaber
04:03 AM Feature #6720: lazy hydration
I think @readFields@ should be re-thinked a bit, because it has quite a weird integration with @liveProps@ - it may b... Alexandru Lungu
10:01 AM Bug #9667 (Review): Bottleneck in BaseRecord.getActiveUpdateDiffs
I committed the code to 9667a/15716, it is ready for review. Artur Școlnic
04:06 AM Bug #9667 (WIP): Bottleneck in BaseRecord.getActiveUpdateDiffs
Artur Școlnic

02/19/2025

12:41 PM Feature #6720: lazy hydration
I found another case where @6720b@ works incorrectly:... Andrei Plugaru
10:21 AM Bug #9670: Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
This task is straight-forward. Most API from UnclosablePreparedStatement are using a lambda function to time measure ... Alexandru Lungu
10:20 AM Bug #9670 (Test): Rewrite UnclosablePreparedStatement JMXs to honor FwdServerJMX.JMX_DEBUG
Alexandru Lungu
10:18 AM Bug #9669: Optimize RecordMeta.applyInitialValues
In a profiled scenario (#9652), there are 3.6k calls to RecordMeta.applyInitialValues:
* all are generated by @Rec...
Alexandru Lungu
10:13 AM Bug #9669 (Test): Optimize RecordMeta.applyInitialValues
Alexandru Lungu
05:27 AM Bug #9667: Bottleneck in BaseRecord.getActiveUpdateDiffs
In a profiled scenario (#9652), there are 46k calls to @BaseRecord.getActiveUpdateDiffs@:
* 26.8k caused by DMO sett...
Alexandru Lungu
05:09 AM Bug #9667 (Test): Bottleneck in BaseRecord.getActiveUpdateDiffs
Alexandru Lungu
03:30 AM Bug #9590: Double LOAD for each record in FWD
Rebased *9590a* to latest trunk *trunk/15713*, the branch is now at revision *15714*. Dănuț Filimon

02/18/2025

10:19 AM Feature #6720: lazy hydration
For solving the issue presented in #6720-98 I have created a new method which evicts the ResultSet from the cache and... Andrei Plugaru
08:31 AM Feature #6720: lazy hydration
FYI, @ownResultSet@ and @unownResultSet@ are things specific to #6720 effort - feel free to adjust their usage to fit... Alexandru Lungu
07:29 AM Feature #6720: lazy hydration
The issue regarding the lack of validation of uniqueness have been solved by calling @rs.isLast()@ and making the res... Andrei Plugaru
02:16 AM Feature #6720: lazy hydration
I actually see now why that if statement was missing. When we call @rs.next()@, the result set will be invalidated, s... Andrei Plugaru
08:04 AM Feature #7020: always use "expanded" extent fields
First try to solve contains for expanded extent fields in a temp-table looks like this:
For example, for a field n...
Stefanel Pezamosca

02/17/2025

10:52 AM Feature #6720: lazy hydration
While I was investigating the unit tests for that large customer application, I found out a scenario that somehow doe... Andrei Plugaru
04:31 AM Feature #6720: lazy hydration
Please note that the unit tests are starting with an empty database, so all persistent data that is used is actually ... Alexandru Lungu
02:35 AM Feature #6720: lazy hydration
Eric Faulhaber wrote:
> My gut tells me this is related to something we are doing internally in the runtime (hopeful...
Andrei Plugaru
04:18 AM Bug #9317 (Test): FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches...
Ioana, feel free to also merge 9317a to 7156c and 7156d. Alexandru Lungu

02/14/2025

02:34 PM Feature #6720: lazy hydration
I suspect the application does not actually need 94%. My gut tells me this is related to something we are doing inter... Eric Faulhaber
02:20 PM Feature #6720: lazy hydration
> It seems that we need, at least during the unit tests for this large customer application, to hydrate over 94% of f... Greg Shah
10:03 AM Feature #6720: lazy hydration
I have added counters to see how many fields are hydrated using the LazyResultSet vs using the fallback loader.
|_. ...
Andrei Plugaru
08:45 AM Feature #6720: lazy hydration
We have also discussed during the meeting, but I will also post here for reference. Each element of expanded extents ... Andrei Plugaru
08:04 AM Feature #6720: lazy hydration
Andrei, for denormalized extent, there can be tables with 100s or more of fields, with maybe 90% of them from extent.... Constantin Asofiei
07:40 AM Feature #6720: lazy hydration
The current results:
|_. Counter name |_. Temp/Persistent|_. Hits |
|/2=. Total number of fields | Temp |1565973 |...
Andrei Plugaru
04:59 AM Feature #6720: lazy hydration
Alexandru Lungu wrote:
> Good statistic! Quick question: are the numbers cumulative for temp and persistent tables. ...
Andrei Plugaru
04:49 AM Feature #6720: lazy hydration
Good statistic! Quick question: are the numbers cumulative for temp and persistent tables. If so, can we make a disti... Alexandru Lungu
04:01 AM Feature #6720: lazy hydration
I have added also other counters to measure the impact of the approach presented in the last notes. Here are the resu... Andrei Plugaru
01:54 PM Feature #7020: always use "expanded" extent fields
> What do you think, should this be done in another task ?
No, let's solve it here, once and for all time.
Greg Shah
02:09 AM Feature #7020: always use "expanded" extent fields
The *7020c* rebased with *trunk* revision *15703*. New revision is *15723*. Stefanel Pezamosca
09:59 AM Bug #9633 (WIP): bulk delete for permanent tables
Andrei Iacob
07:24 AM Bug #9318: Make record nursery visible on removeRecords
I actually missed a regression in etf, so I am currently investigating it. Dănuț Filimon
06:17 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
9317a is merged to trunk as rev. 15708 and archived. Ioana-Cristina Prioteasa
05:18 AM Bug #9317 (Merge Pending): FIRST/LAST clauses can avoid generating sub-selects if the WHERE claus...
Please merge 9317a to trunk now. Alexandru Lungu

02/13/2025

10:54 AM Feature #6720: lazy hydration
Committed @6720b/15700@ with the the implementation to hydrate all the unhydrated fields when the session closes.
...
Andrei Plugaru
07:16 AM Feature #6720: lazy hydration
> Regarding, the idea to fully hydrate the records that are still loaded when the session closes. I also like it, I c... Greg Shah
06:21 AM Feature #6720: lazy hydration
So, I have tried the example from the last note where I closed the session before the commit in debugger. As a result... Andrei Plugaru
04:08 AM Feature #6720: lazy hydration
Agree with #6720-80. Doing updates will keep the session open as long as the transaction is open. If there is no tran... Alexandru Lungu
02:53 AM Feature #6720: lazy hydration
Yesterday, I had a discussion with Alex, mainly focused on 2 things:
# Should the session really be closed when exit...
Andrei Plugaru
09:48 AM Feature #7020: always use "expanded" extent fields
I did some other small changes and *7020c* is now at revision *15707*.
With denorm-extent the name of the word tab...
Stefanel Pezamosca
06:00 AM Bug #9590: Double LOAD for each record in FWD
Committed *9590a/15680*. Avoid double firing of a FIND trigger when the DynamicResults use a RandomAccessQuery query.... Dănuț Filimon
03:55 AM Bug #9590: Double LOAD for each record in FWD
The fix from #9590-22 is good for DynamicResults, but not ScrollingResults. We rely on the already parsed results and... Dănuț Filimon
02:27 AM Bug #9633: bulk delete for permanent tables
Eric Faulhaber wrote:
> Alexandru Lungu wrote:
> > We have the bulk delete for temporary tables, maybe that can be ...
Constantin Asofiei

02/12/2025

09:26 AM Bug #9633: bulk delete for permanent tables
Alexandru Lungu wrote:
> We have the bulk delete for temporary tables, maybe that can be used as a source of inspira...
Eric Faulhaber
08:50 AM Bug #9633: bulk delete for permanent tables
We have the bulk delete for temporary tables, maybe that can be used as a source of inspiration. Alexandru Lungu
08:47 AM Bug #9633: bulk delete for permanent tables
Another note: we should always force an outer tx when we do the bulk delete. Because the code like @for each book ex... Constantin Asofiei
09:18 AM Feature #6720: lazy hydration
I currently have this change to @Hydrator.java@:... Andrei Plugaru
07:27 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
9317a/15689 passed the MT harness test ✅. Ovidiu Maxiniuc

02/11/2025

09:47 AM Feature #9456 (WIP): implement SQL Server dialect and helpers
I set up a MSSQL instance for a new customer and put to the test the DDLs FWD generates today. I know for sure a few ... Ovidiu Maxiniuc
05:08 AM Bug #9633: bulk delete for permanent tables
I want to stress that the run-time is there, but may be flawed considering it was dead-code by now. Some part is comm... Alexandru Lungu
03:25 AM Bug #9633: bulk delete for permanent tables
FWD emits bulk delete aka @deleteForAll@ only for temp-tables. We need to emit these also for permanent tables. The... Constantin Asofiei
03:22 AM Bug #9633 (Review): bulk delete for permanent tables
Constantin Asofiei

02/10/2025

06:04 AM Feature #6720: lazy hydration
> In 6720b, the records also have their hydrator refreshed. With your example, I would like to find out why the code ... Andrei Plugaru
05:00 AM Feature #6720: lazy hydration
> Currently, as I think the session should indeed be closed in this case, the solution is to catch the LazyHydrationE... Alexandru Lungu
03:36 AM Feature #6720: lazy hydration
Currently, as I think the session should indeed be closed in this case, the solution is to catch the @LazyHydrationEx... Andrei Plugaru
02:54 AM Feature #6720: lazy hydration
During regression testing of a large customer application I found some problems. Most of them have a @LazyHydrationEx... Andrei Plugaru

02/07/2025

08:24 AM Feature #9623: honoring database users and database-defined access control
OE has features that allow customers to:
# Define users at the database (the @_user@ table). *There is no group s...
Greg Shah
08:13 AM Feature #9623 (New): honoring database users and database-defined access control
Greg Shah
06:34 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Committed on the testcases project, rev. 1704 the 10 new 4GL unit tests. These verify the number of results and the o... Ioana-Cristina Prioteasa
04:19 AM Feature #7020 (Review): always use "expanded" extent fields
7020c was rebase to trunk revision 15687.
I have committed 15704/15705, please review:
Removed support for denorm...
Stefanel Pezamosca

02/06/2025

04:24 PM Feature #9544: implement missing SESSION handle attributes
Greg Shah wrote:
> Code Review Task Branch 9544a Revision 15688
>
> No objections. The reporting changes only ne...
Ovidiu Maxiniuc
11:16 AM Feature #9544 (Internal Test): implement missing SESSION handle attributes
Greg Shah
11:15 AM Feature #9544: implement missing SESSION handle attributes
Code Review Task Branch 9544a Revision 15688
No objections. The reporting changes only need simple testing with H...
Greg Shah
07:59 AM Feature #9544 (WIP): implement missing SESSION handle attributes
I created branch 9544a and committed the updates on gap info for @FIRST-BUFFER@ and @FIRST-QUERY@ @SESSION@ attributes. Ovidiu Maxiniuc
11:18 AM Feature #9542 (Review): finish ORIGIN-HANDLE ProDataSet attribute
Code Review Task Branch 9544a Revision 15689
I saw the changes from this task were added to 9544a.
I see no iss...
Greg Shah
10:25 AM Feature #6720: lazy hydration
*I finished rebasing 6720b to trunk.* 🥳
I also done some light testing to be sure we haven't lost the lazy hydrati...
Andrei Plugaru
08:29 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Ioana-Cristina Prioteasa wrote:
> [...]
> The testing plan is now complete. While harness tests are currently unava...
Eric Faulhaber
04:42 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
The two additional tests passing are *not* a direct result of 9317a. The failures occur when the outer join optimizat... Ioana-Cristina Prioteasa
03:33 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
ETF passed . Lorian Sandu

02/05/2025

10:38 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Tested 150 performance tests and the average time for a run stands for what I observed in #9317-31.
|_.Scenario|_....
Ioana-Cristina Prioteasa
09:25 AM Feature #7020 (WIP): always use "expanded" extent fields
I started removing some denormalized / custom-extent references and seems to work well.
But, there is an issue I for...
Stefanel Pezamosca
04:09 AM Feature #7020: always use "expanded" extent fields
So, should I remove all references to @denormalized@ / @custom-extents@ and keep just the @normalized@ and @expanded@... Stefanel Pezamosca
07:41 AM Feature #6720: lazy hydration
Usages of @getData@ I have analysed:
* @Persister.insert@ Here it is not checked whether all the fields are hydrated...
Andrei Plugaru
03:46 AM Feature #6720: lazy hydration
Committed @6720b/14923@. I have addressed the issue exposed in #6720-71 by changing the corresponding bit from @liveP... Andrei Plugaru
07:22 AM Bug #9590: Double LOAD for each record in FWD
Dănuț Filimon wrote:
> [...] but I am still struggling with the final @results.previous()@ call which triggers the a...
Dănuț Filimon
06:56 AM Bug #9590: Double LOAD for each record in FWD
My new approach was to take into consideration @results.isAutoFetch()@ when firing the trigger in @RecordBuffer.setRe... Dănuț Filimon
05:40 AM Bug #9318: Make record nursery visible on removeRecords
ETF Conversion went well, ran two tests using the default @implicit = false@ and @deleteIndex = null@, found no regre... Dănuț Filimon

02/04/2025

04:18 PM Feature #9544: implement missing SESSION handle attributes
You might as well make the gap marking change and let's just get this closed out. Greg Shah
01:48 PM Feature #9544: implement missing SESSION handle attributes
I did basic tests and these seem to +work as expected+. Yet, the gaps seem so suggest there is still work to do here:... Ovidiu Maxiniuc
01:18 PM Feature #9542: finish ORIGIN-HANDLE ProDataSet attribute
One more thing:
In Ref manual, the attribute is reported as:...
Ovidiu Maxiniuc
01:09 PM Feature #9542: finish ORIGIN-HANDLE ProDataSet attribute
Actually the support for this attribute is 90% implemented. What is missing is the 'reset'. It seems like the @rules/... Ovidiu Maxiniuc
10:36 AM Feature #6720: lazy hydration
I probably found a possible problem with the usage of @getData@ in @Record.setPropertyValues@. The problem is that he... Andrei Plugaru
07:14 AM Feature #6720: lazy hydration
As @BaseRecord.getData@ is only used in about 10 places, my current plan is to make some testcases to stress out as m... Andrei Plugaru
07:11 AM Feature #6720: lazy hydration
I actually just managed also with persistent tables:... Andrei Plugaru
05:24 AM Feature #6720: lazy hydration
Andrei, even though it is not that prominent for __temp database, I think it is still applied if I am not mistaken. I... Alexandru Lungu
05:20 AM Feature #6720: lazy hydration
My current focus for now is to check if the rollback functionality works when the lazy hydration is in place. Unfortu... Andrei Plugaru
03:23 AM Feature #6720: lazy hydration
> In this case, all the fields are hydrated at the beginning instead of only the camelCase field when it is accessed.... Alexandru Lungu
03:13 AM Feature #6720: lazy hydration
While I was going over the changes and trying to understand them, I tried a simple example that should have used the ... Andrei Plugaru
08:50 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Ioana-Cristina Prioteasa wrote:
> Testing plan for *9317a*:
> * *Lorian[ls]/Andrei[ai]/Ioana[icp]*: Chui regression...
Lorian Sandu
08:19 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
The time is the total execution time of all queries executed during the test. Ioana-Cristina Prioteasa
07:17 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
What is the timing reflect? The total time for a specific query? What was the query analyzed? Or do you mean all SQL ... Alexandru Lungu
05:56 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
I enabled SQL logging during a performance test with a threshold of 0, ensuring all queries were logged. The test was... Ioana-Cristina Prioteasa
03:08 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Ioana-Cristina Prioteasa wrote:
> Testing plan for *9317a*:
> * *Andrei[ai]*: large customer Gui application regres...
Andrei Iacob
07:13 AM Bug #9590: Double LOAD for each record in FWD
Dănuț Filimon wrote:
> This was added in trunk/12101 for #5136.
Correction, the actual code from #9590-17 was add...
Dănuț Filimon
03:55 AM Bug #9590: Double LOAD for each record in FWD
Alexandru Lungu wrote:
> > The problem is that !shouldUpdateAnyLock(lockType) will be false because the query compon...
Dănuț Filimon
03:48 AM Bug #9590: Double LOAD for each record in FWD
Alexandru Lungu wrote:
> Why is this solution working? @fetch(true, lockType, false);@ was going to call @super.fetc...
Dănuț Filimon
03:41 AM Bug #9590: Double LOAD for each record in FWD
Why is this solution working? @fetch(true, lockType, false);@ was going to call @super.fetch(available, lockType, err... Alexandru Lungu
03:34 AM Bug #9590: Double LOAD for each record in FWD
Alexandru Lungu wrote:
> > The problem is that !shouldUpdateAnyLock(lockType) will be false because the query compon...
Dănuț Filimon
03:29 AM Bug #9590: Double LOAD for each record in FWD
> The problem is that !shouldUpdateAnyLock(lockType) will be false because the query component will have a dynamic pr... Alexandru Lungu
02:34 AM Feature #7020: always use "expanded" extent fields
I'm considering a solution: We could remove all references to denorm-extent and replace them with expanded-extents. T... Stefanel Pezamosca

02/03/2025

04:34 PM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> Does this mean "back to the drawing board", or is there a way around this?
Ugh, this is t...
Eric Faulhaber
04:27 PM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> So, pretty much all the errors I encountered while testing 7020c with expand-extents=tru...
Eric Faulhaber
12:50 PM Feature #7020: always use "expanded" extent fields
Ovidiu noted this when I posted that my attempt to import into the database with normalized extents resulted in too m... Roger Borrello
12:08 PM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> Constantin Asofiei wrote:
> > The regression testing needs to do a diff between current/tru...
Constantin Asofiei
11:54 AM Feature #7020: always use "expanded" extent fields
Constantin Asofiei wrote:
> The regression testing needs to do a diff between current/trunk DDLs and the new DDLs. ...
Roger Borrello
11:42 AM Feature #7020: always use "expanded" extent fields
The regression testing needs to do a diff between current/trunk DDLs and the new DDLs. We need to know how/if someth... Constantin Asofiei
11:19 AM Feature #7020: always use "expanded" extent fields
Greg Shah wrote:
> No, that tool is not ready yet. Please test using a normal import.
Results noted in #8982-8
Roger Borrello
09:30 AM Feature #7020 (Review): always use "expanded" extent fields
I have committed to 7020c revision 15690 some changes to address this:
>DDLGeneratorWorker$Helper.addField negates e...
Stefanel Pezamosca
09:25 AM Feature #7020: always use "expanded" extent fields
No, that tool is not ready yet. Please test using a normal import. Greg Shah
09:18 AM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> Roger Borrello wrote:
> > *No errors* in the build with @9537a-15672@. I was indicating...
Roger Borrello
09:06 AM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> *No errors* in the build with @9537a-15672@. I was indicating that the previous attempts (wi...
Stefanel Pezamosca
08:57 AM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> Roger Borrello wrote:
> > There are 2 builds of the customer application using @9537a-1...
Roger Borrello
06:47 AM Feature #7020: always use "expanded" extent fields
> Could you send me an email (sp) with the details ?
Details can be discussed in #9537.
Greg Shah
02:16 AM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> There are 2 builds of the customer application using @9537a-15672@, one as we have always bu...
Stefanel Pezamosca
11:57 PM Feature #7020: always use "expanded" extent fields
There are 2 builds of the customer application using @9537a-15672@, one as we have always built, and one using @denor... Roger Borrello
09:29 AM Bug #9590: Double LOAD for each record in FWD
Alexandru, you mentioned in the meeting the @Results.isAutoFetch()@ method which is used here:... Dănuț Filimon
07:21 AM Bug #9590: Double LOAD for each record in FWD
Dănuț Filimon wrote:
> The CompoundQuery ends up triggering the FIND once in the @CompoundQuery.last(), Object[] ids...
Dănuț Filimon
07:13 AM Bug #9590: Double LOAD for each record in FWD
The CompoundQuery ends up triggering the FIND once in the @CompoundQuery.last(), Object[] ids = retrieve(LAST, lockTy... Dănuț Filimon
06:37 AM Bug #9590: Double LOAD for each record in FWD
I've managed to fix the AdaptiveQuery scenario, currently looking into fixing the CompoundQuery scenario. Dănuț Filimon
03:06 AM Bug #9590: Double LOAD for each record in FWD
There's an issue with #9590-9, especially with how triggers are executed for certain result sets. In the AdaptiveQuer... Dănuț Filimon
05:06 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
*9317a is rebased*, the revisions that need testing: *15679 - 15689*. Ioana-Cristina Prioteasa
04:56 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
In the trunk version, @collectPropertyMatches@ defaults them to false and -1 when creating the @AstWalkListener@, so ... Razvan-Nicolae Chichirau
04:39 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Rebasing 9317 cause some issues because of *trunk rev. 15656*:... Ioana-Cristina Prioteasa
02:56 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Testing plan for *9317a*:
* *Ioana[icp]*: large customer application unit tests and regression tests - DONE
* *Andr...
Ioana-Cristina Prioteasa

01/31/2025

10:03 AM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> So, an update on 7020c, I was testing a customer application and encountered a regressio...
Stefanel Pezamosca
07:09 AM Feature #7020 (WIP): always use "expanded" extent fields
So, an update on 7020c, I was testing a customer application and encountered a regression that seems to be related wi... Stefanel Pezamosca
07:08 AM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> Unfortunately, I ran out of space on my conversion attempt (see #7183-106). I will retry. Di...
Stefanel Pezamosca
04:25 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
h2. ..
Alexandru Lungu wrote:
> > So here the emitted sql differs and without the changes the where clause coming...
Ioana-Cristina Prioteasa
04:20 AM Feature #6720: lazy hydration
Andrei, please attempt to rebase *6720b* to latest trunk and continue the effort here. We can talk before picking up ... Alexandru Lungu
03:56 AM Bug #9318: Make record nursery visible on removeRecords
Alexandru Lungu wrote:
> Review of 9318a:
> * Please avoid overloading @removeRecords@ and enforce all callers to d...
Dănuț Filimon
01:19 AM Bug #9318: Make record nursery visible on removeRecords
Rebased *9318a* to latest *trunk/15676*, the branch is now at revision *15679*.
Currently working on addressing th...
Dănuț Filimon

01/30/2025

05:41 PM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> Roger Borrello wrote:
> > Stefanel Pezamosca wrote:
> > > *Roger* (or someone who can), co...
Roger Borrello
10:59 AM Feature #7020: always use "expanded" extent fields
Roger Borrello wrote:
> Stefanel Pezamosca wrote:
> > *Roger* (or someone who can), could you help by testing *9537...
Roger Borrello
10:13 AM Feature #7020: always use "expanded" extent fields
I have rebased 7020c to trunk revision 15674.
I have committed a few fixes and code cleanup after the rebase and 70...
Stefanel Pezamosca
10:31 AM Bug #9595: Records accessed from dynamic buffers remain LOCKed until the user context is destroyed
+Eric Greg Shah
10:27 AM Bug #9595: Records accessed from dynamic buffers remain LOCKed until the user context is destroyed
I am facing some issues related to (un-)locking of records from (dynamic) buffers. Consider the following 2 procedure... Ovidiu Maxiniuc
10:19 AM Bug #9595 (WIP): Records accessed from dynamic buffers remain LOCKed until the user context is de...
Ovidiu Maxiniuc
09:59 AM Bug #9317 (Internal Test): FIRST/LAST clauses can avoid generating sub-selects if the WHERE claus...
> So here the emitted sql differs and without the changes the where clause coming from the OF clause is not included.... Alexandru Lungu
07:56 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
For the case @baseWhere == null@ the subselect is not to be generated. This was overlooked. And now it becomes clear ... Ioana-Cristina Prioteasa
06:10 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
h2. --... Ioana-Cristina Prioteasa
09:47 AM Bug #9318 (WIP): Make record nursery visible on removeRecords
Review of 9318a:
* Please avoid overloading @removeRecords@ and enforce all callers to decide what kind of delete th...
Alexandru Lungu
02:03 AM Bug #9318: Make record nursery visible on removeRecords
Alexandru Lungu wrote:
> 9318a is at rev. 15618 (which doesn't include your latest changes).
Sorry about that, th...
Dănuț Filimon
09:43 AM Bug #9590: Double LOAD for each record in FWD
Using an AdaptiveQuery, the problem is this:... Dănuț Filimon
09:14 AM Bug #9590: Double LOAD for each record in FWD
Octavian Adrian Gavril wrote:
> Yes, the test case is complete. I got the result using *9509a/15650* which has some ...
Dănuț Filimon
08:59 AM Bug #9590: Double LOAD for each record in FWD
Yes, the test case is complete. I got the result using *9509a/15650* which has some changes for @CompoundQuery@. The ... Octavian Adrian Gavril
08:55 AM Bug #9590: Double LOAD for each record in FWD
I followed up the first run of the test with another one and the @file.txt@ now contains:... Dănuț Filimon
08:50 AM Bug #9590: Double LOAD for each record in FWD
Tested with *trunk/15674*, the output of @file.txt@ was:... Dănuț Filimon
08:34 AM Bug #9590 (WIP): Double LOAD for each record in FWD
Dănuț Filimon

01/29/2025

11:16 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
Review of 9317a:
* @if (joinRef != null && !joinRef.equals(ref))@ this makes the query matching a bit more relaxed...
Alexandru Lungu
11:02 AM Bug #9318: Make record nursery visible on removeRecords
9318a is at rev. 15618 (which doesn't include your latest changes). Alexandru Lungu
09:22 AM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> *Roger* (or someone who can), could you help by testing *9537a* with @denorm_extents==tr...
Roger Borrello
08:20 AM Feature #7020: always use "expanded" extent fields
Stefanel Pezamosca wrote:
> Hynek Cihlar wrote:
> > Code review 7020c. The UI changes look OK to me.
> >
> > Th...
Hynek Cihlar
08:13 AM Feature #7020: always use "expanded" extent fields
Hynek Cihlar wrote:
> Code review 7020c. The UI changes look OK to me.
>
> There are some files that are missing...
Stefanel Pezamosca
08:02 AM Feature #7020: always use "expanded" extent fields
Code review 7020c. The UI changes look OK to me.
There are some files that are missing file history entries.
Hynek Cihlar
07:34 AM Feature #7020 (Review): always use "expanded" extent fields
> There is one more issue I'm trying to fix related with expanded_extents=true. The fields that are empty strings are... Stefanel Pezamosca
07:19 AM Feature #7020: always use "expanded" extent fields
> *Greg/Roger*: I want to ask: Do you think we should bring the UI fixes for @denorm-extents=true@ in another branch ... Greg Shah
03:59 AM Feature #7020: always use "expanded" extent fields
There is one more issue I'm trying to fix related with @expanded_extents=true@. The fields that are empty strings are... Stefanel Pezamosca
04:07 AM Bug #9590: Double LOAD for each record in FWD
This testcase is generating the following output:... Octavian Adrian Gavril
04:03 AM Bug #9590 (WIP): Double LOAD for each record in FWD
Octavian Adrian Gavril

01/28/2025

09:04 AM Feature #7020: always use "expanded" extent fields
I managed to fix some of the errors mentioned in #7020-62. There are more places in code that uses @PropertyMeta.getE... Stefanel Pezamosca
08:40 AM Feature #7020: always use "expanded" extent fields
+Hynek to review the UI changes. Greg Shah
08:32 AM Feature #7020 (WIP): always use "expanded" extent fields
I realised that until now I tested with @denorm-extents=true@ configuration and not @expand-extents=true@.
I added @...
Stefanel Pezamosca
05:30 AM Feature #7020 (Review): always use "expanded" extent fields
Ovidiu Maxiniuc wrote:
> * this is a very simple expression (only the @id_ext@ column), but the extent index can be ...
Stefanel Pezamosca
02:27 AM Feature #7020: always use "expanded" extent fields
I have committed to 7020c revision 15669:
* Fixed inconsistency in frame widget handling when using denorm-extents.
...
Stefanel Pezamosca
07:14 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
I build the following testcase:... Ioana-Cristina Prioteasa
05:11 AM Bug #9317: FIRST/LAST clauses can avoid generating sub-selects if the WHERE clause matches a uniq...
I think 4GL shows a compile error, right? In that case, FWD shouldn't be fixed as it presumes correct 4GL input.
Fo...
Alexandru Lungu
 

Also available in: Atom