Project

General

Profile

Activity

From 02/08/2025 to 03/09/2025

03/07/2025

04:18 PM Bug #9633: bulk delete for permanent tables
Review of 9656a/15759.
* @Persistence.java@
** I think the new methods are very useful additions;
** line 1370: ...
Ovidiu Maxiniuc
08:04 AM Bug #9633: bulk delete for permanent tables
Ovidiu, can you review 9656a, please? I'd like to get this into trunk. Constantin Asofiei
03:46 AM Feature #7020: always use "expanded" extent fields
*7020c* was rebased to trunk *15761* and is now at revision *15786*. Stefanel Pezamosca

03/05/2025

08:09 AM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
Eric Faulhaber wrote:
> Can you proceed with testing the simple MT setup you were using before the customer's test c...
Ovidiu Maxiniuc
08:02 AM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
Ovidiu Maxiniuc wrote:
> The regression tests returned with success, as well as my targetted testcases used for deve...
Eric Faulhaber
05:39 AM Bug #9633: bulk delete for permanent tables
Constantin Asofiei wrote:
> The @invalidateCache@ may be used for the future bulk-delete for permanent tables, too (...
Constantin Asofiei
05:34 AM Bug #9633: bulk delete for permanent tables
The state-changed 'buffer refresh' event was added to 9656a/15759 (after rebase).
I've tested how 4GL behaves if t...
Constantin Asofiei

03/04/2025

05:19 AM Bug #9633: bulk delete for permanent tables
> The concern is only for buffers in the same session. I plan to add an API to post an event, intercepted via 'stateC... Alexandru Lungu
05:17 AM Bug #9633: bulk delete for permanent tables
Alexandru Lungu wrote:
> * Having an exception should attempt to unlock the records?
The point is for the outer blo...
Constantin Asofiei
04:44 AM Bug #9633: bulk delete for permanent tables
Review of 9656a:
> added Persistence.invalidateCache, as a central API to force cache invalidation. This allows sp...
Alexandru Lungu
03:16 AM Bug #9633: bulk delete for permanent tables
Starting to look into the changes ... Alexandru Lungu
04:03 AM Feature #6720: lazy hydration
> However, I think we have the JDBC to create the old buffer directly, at the moment the trigger is called instead of... Alexandru Lungu
02:07 AM Feature #7020: always use "expanded" extent fields
*7020c* was rebased to trunk *15752* and is now at revision *15777*. Last 5 revisions have some performance improveme... Stefanel Pezamosca

03/03/2025

04:30 PM Feature #6720: lazy hydration
Greg Shah wrote:
> I understand. I presume it is scoped to the trigger. It is implicitly nested inside the convert...
Ovidiu Maxiniuc
03:29 PM Feature #6720: lazy hydration
> The 'old' buffer is not a normal buffer. The @snapshot@ of a record is created at the time it is changed (only if a... Greg Shah
11:49 AM Feature #6720: lazy hydration
The 'old' buffer is not a normal buffer. The @snapshot@ of a record is created at the time it is changed (only if a t... Ovidiu Maxiniuc
01:38 PM Bug #9633 (Review): bulk delete for permanent tables
I'm placing 9656a in review to get some info from Alexandru/Ovidiu.
One note about my previous concern:
* buffers...
Constantin Asofiei
06:57 AM Bug #9633: bulk delete for permanent tables
Created task branch 9656a from trunk rev 15750. The changes are in 15751:
* added @Persistence.invalidateCache@, as...
Constantin Asofiei
11:48 AM Feature #9093: add protection for multi-tenant imports to optionally only import tables that are ...
The regression tests returned with success, as well as my targetted testcases used for development. But these no not ... Ovidiu Maxiniuc
08:53 AM Bug #9683: CompoundQuery is doing extra hydration attempts
I committed rev 15726. It contains a new interface and a few implementing classes. Artur Școlnic
07:07 AM Bug #9701 (Test): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality c...
I have now also ported the changes to @7156c/15546@ and @7156e/15734@. Andrei Plugaru
06:44 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Andrei Plugaru wrote:
> I have merged to trunk as rev 15750.
>
> *Danut, should I also port it to 7156c and 7156e...
Dănuț Filimon
06:40 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I have merged to trunk as rev 15750.
*Danut, should I also port it to 7156c and 7156e?*
Andrei Plugaru
04:06 AM Bug #9701 (Merge Pending): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO e...
Please merge 9701a to trunk now. Alexandru Lungu
02:37 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
All the testing showed no regressions. ✅
I think this can be queued in for merge.
Andrei Plugaru
05:33 AM Bug #8868 (Rejected): Fix "Can't normalize FWD value to use it with direct access." error for Fie...
This fix made it into trunk as rev 15687, it was part of #9587. I am dead archiving 8868a and rejecting this issue. Dănuț Filimon
04:30 AM Bug #9717: Investigate the possibility to replace UNIQUE INDEX with NON-UNIQUE INDEX and UNIQUE C...
Incipient research shows that @UNIQUE CONSTRAINT@ is mostly a sugar syntax for an UNIQUE INDEX. The point is that @UN... Alexandru Lungu

02/28/2025

09:05 AM Feature #9711: collation configuration cleanup
Greg Shah wrote:
> > I agree that it is best to have the collation for all these databases in sync to the degree po...
Eric Faulhaber
08:38 AM Bug #9717: Investigate the possibility to replace UNIQUE INDEX with NON-UNIQUE INDEX and UNIQUE C...
The legacy UNIQUE INDEX transforms into UNIQUE INDEX in SQL. Recently, we discovered that queries over UNIQUE INDEXes... Alexandru Lungu
08:31 AM Bug #9717 (New): Investigate the possibility to replace UNIQUE INDEX with NON-UNIQUE INDEX and UN...
Alexandru Lungu
05:57 AM Feature #7020: always use "expanded" extent fields
*7020c* was rebased to trunk *15747* and is now at revision *15771*. Stefanel Pezamosca
05:57 AM Bug #9683: CompoundQuery is doing extra hydration attempts
9683a seems to be on the right track.
At this is in an early stage, I may say that it has quite a high cognitive c...
Alexandru Lungu
04:48 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
As the proposed changes are not really related to this task, I created a new one - #9714, which will address the remo... Andrei Plugaru
04:46 AM Bug #9714: Remove LocalSyncher as it has become dead code
From Eric in #9701-24:
> Please note that LocalSyncher is effectively dead code. We really should remove its use. It...
Andrei Plugaru
04:45 AM Bug #9714 (New): Remove LocalSyncher as it has become dead code
Andrei Plugaru
02:18 AM Bug #9713: Remove singleBuffer from FQLPreprocessor constructor call
This task was created based on #9695-27.
The main drive for this task is that The @private FQLPreprocessor(List<Re...
Dănuț Filimon
02:11 AM Bug #9713 (New): Remove singleBuffer from FQLPreprocessor constructor call
Dănuț Filimon

02/27/2025

04:27 PM Feature #9711: collation configuration cleanup
> I agree that it is best to have the collation for all these databases in sync to the degree possible, and if we ha... Greg Shah
04:16 PM Feature #9711: collation configuration cleanup
Greg Shah wrote:
> For persistent databases, we need the collation used for the primary database to be consistent wi...
Eric Faulhaber
11:33 AM Feature #9711: collation configuration cleanup
For the @_temp@ database, please see my comments in #9699-15 through #9699-21. We should eliminate all hard coded cf... Greg Shah
11:30 AM Feature #9711: collation configuration cleanup
This is meant to finish the work left open in #5491-20:
We need to simplify the configuration of the locale/collat...
Greg Shah
11:30 AM Feature #9711 (WIP): collation configuration cleanup
Greg Shah
03:39 PM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Eric Faulhaber wrote:
> Please note that @LocalSyncher@ is effectively dead code. We really should remove its use. I...
Andrei Plugaru
10:00 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Andrei Plugaru wrote:
> Alexandru Lungu wrote:
> > * Please investigate if there are @equals@ comparisons of @BaseR...
Eric Faulhaber
09:53 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I think that should suffice. The changes are right at the heart of the persistence and surely the affected code will ... Ovidiu Maxiniuc
09:44 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Thanks, Ovidiu, for the review.
As we want to test it more aggressively, I propose the following tests, apart from...
Andrei Plugaru
09:32 AM Bug #9701 (Internal Test): RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO e...
I have reviewed the changes in 9701a/r15735.
I agree with the new code (with the reservation of the problem related ...
Ovidiu Maxiniuc
08:09 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I have ran the fwd tests and they show no regressions. Andrei Plugaru
07:28 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
The unit tests of a customer passed, however I have one more failing test in the fwd tests. So, I am running the fwd ... Andrei Plugaru
04:44 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
I will be following this test plan:
* unit tests for a large customer application [ai]
* fwd tests of another large...
Andrei Plugaru
04:37 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
Andrei, please do other remaining testing until Ovidiu provides a final Review (unit tests or/and ChUi regression tes... Alexandru Lungu
03:31 AM Bug #9701: RecordBuffer.updateCurrentChanged can be optimized to use a fast DMO equality check
*Ovidiu*, please take a look over the changes in @9701a@ when you are available. Andrei Plugaru
11:40 AM Feature #9712: ensure that the language and encoding options in use across the current customer b...
As found in #9699, some customers may be setup with invalid combinations of language and codepage. We need a list of... Greg Shah
11:37 AM Feature #9712 (New): ensure that the language and encoding options in use across the current cust...
Greg Shah
11:35 AM Feature #5491 (Closed): custom locale/collation implementations
The remaining work is in #9711. Greg Shah
07:33 AM Bug #9669 (Test): Optimize RecordMeta.applyInitialValues
Alexandru Lungu
07:08 AM Bug #9669: Optimize RecordMeta.applyInitialValues
Branch 9669a was merged to trunk as rev.15743 and archived. Artur Școlnic
06:24 AM Bug #9669 (Merge Pending): Optimize RecordMeta.applyInitialValues
Please merge 9669a to trunk after 9466b. Alexandru Lungu
06:13 AM Bug #9669: Optimize RecordMeta.applyInitialValues
FwdTests passed. Artur Școlnic
05:40 AM Bug #9669 (Internal Test): Optimize RecordMeta.applyInitialValues
I am OK with the changes:
* please fix @if (data[i] != null) {@ brace positioning.
This can go into internal test...
Alexandru Lungu
05:13 AM Bug #9669: Optimize RecordMeta.applyInitialValues
Removed getProperties in rev 15722. Artur Școlnic
05:00 AM Bug #9669 (Review): Optimize RecordMeta.applyInitialValues
I committed the latest changes to rev 15721.
Artur Școlnic
02:34 AM 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
06:22 AM Feature #9305 (WIP): Replace begins with interval based conditional
For reference, I misunderstood the documentation. By "C locale", it doesn't mean "libc", but actual C locale (aka POS... Alexandru Lungu
05:02 AM Feature #9305 (Review): Replace begins with interval based conditional
As a resolution for #9305, I updated [[p2j:4GL_Database_Access_Performance_Tips]]. Please review. Alexandru Lungu

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
 

Also available in: Atom