Restore original logic in BTR_next_index (wait for tx lock when index build is in progress).
Use irt_repeat::irt_root to store high 32 bit of tra_num.
It also fixed deadlock related with LCK_idx_reserve lock (reported privately).
Special care is taken to generate split point so that both new pages do not exceed the page_size.
Handle case when index key is added and split is propagated up to top-level page and former top-level page is a split by concurrent thread meanwhile.
Bugcheck when b-tree level become greater than MAX_LEVEL (16 currently) is replaced by isc_imp_exc error.
Validation code (aka gfix) now check correctness of level assigned to b-tree page (all pages at level should have same value and value should be decremented by one at each level down).
It should fix bug CORE-4914 and related issues.
Store ValueExprNodes instead of jrd_nod in the metadata cache.
Make RecordSourceNode child of ExprNode as they share most operations.
Get rid of the JRD visitors in favor of direct calls.
Convert assignments statement lists created inside expressions to separate source and targets ValuesExprNodes.
Fixed the layering for WITH LOCK and (partially) ANY/ALL predicates.
Cleaned up the outdated code that never worked (mapping DISTINCT to an index, some VMS remainings).
Wiped out a lot of the pre-ODS11 optimizer logic. Some minor adjustments there.
Re-implemented the full outer join from scratch. This resolves CORE-2678 (full outer join cannot use available indices).
Resolved CORE-2796: DB_KEY is always zero for external tables.
Implemented the core part of the scrollable PSQL cursors. Implementation is still incomplete, but ready for testing.
Some other changes I don't recall at the moment ;-)
WARNING! The engine may be unstable. Please email me about any issues found.
2.- Put inside PC_ENGINE several data members that belong to that feature.
3.- Put inside PC_ENGINE the code that does cleanup on those unused data members.
For example:
create table buggg (f1 int not null, f2 int not null);
commit;
insert into buggg values (1, 1)
commit;
alter table buggg add pk int not null primary key;
or
alter table buggg add constraint pk_buggg primary key (pk)
or
alter table buggg add constraint pk_buggg primary key (f1, f2, pk)