dimitr
9b7f40c1f0
Minor code unification.
2010-02-20 06:39:35 +00:00
dimitr
c7853fa9e1
Fixed CORE-1295: Bad optimization of queries with DB_KEY.
2010-02-19 20:25:56 +00:00
dimitr
faae1821f5
More optimizations for window expressions.
2010-02-16 08:57:35 +00:00
robocop
835750a54c
Misc.
2010-02-16 08:53:31 +00:00
asfernandes
c737d6a807
Create ExprNode class hierarchy.
...
Convert CONCATENATE and aggregate functions to it.
Fix some bugs:
- select sum(n) over (order by n2), sum(n) over (), n, n2 from x1;
- select (select 1 from x1 b where list(1, a.n) = 1) from x1 a;
2010-02-13 20:29:29 +00:00
dimitr
ccac0eac72
Fixed CORE-2822: Error "no current row for fetch operation" when subquery includes a non-trivial derived table.
2010-01-22 14:05:46 +00:00
dimitr
e2aab75891
Fixed the optimizer in regard to the partitioned window functions.
2010-01-19 07:52:38 +00:00
dimitr
df53be29bf
Misc.
2010-01-18 11:39:34 +00:00
dimitr
5186898135
Misc.
2010-01-15 11:40:08 +00:00
dimitr
b795f91267
Misc.
2010-01-14 08:42:33 +00:00
asfernandes
d8c99a9be2
1) Make procedures and functions member of the same hierarchy (Routine class)
...
2) Some completion for external functions
2009-12-27 22:05:22 +00:00
dimitr
37b3b13956
Misc.
2009-12-14 16:43:47 +00:00
robocop
dae574f7f1
Misc, style and unused vars.
2009-12-13 10:41:53 +00:00
dimitr
753f4d62d5
Fixed the plan output (reversed order of view sub-elements) in HEAD (also broken by my yesterday's commit).
2009-12-10 15:03:56 +00:00
dimitr
916d9fab98
Fixed the plan output (table names) in HEAD (broken by my yesterday's commit).
2009-12-10 14:48:42 +00:00
dimitr
11495a55fb
Refactored the whole RSB stuff into classes. They're inside the /recsrc sub-directory now.
...
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.
2009-12-09 18:45:44 +00:00
asfernandes
a3dd1d0482
Misc
2009-11-26 00:20:59 +00:00
robocop
804ad6048a
Restrict us to ODS11 and ODS12 until the dust settles down.
2009-11-24 11:42:56 +00:00
dimitr
e6909de7f7
Wipe out the SCROLLABLE_CURSORS code + minor cleanup.
...
Also, surfaced scrollability for PSQL cursors (without internal support yet).
2009-10-31 06:25:01 +00:00
dimitr
3a3512da8e
Fixed CORE-2659: Sub-optimal (not indexed) query plan for outer joins involving complex views.
...
We don't need to validate all the view streams inside the optimizer, just those inside the e_derived_expr_expr argument.
2009-10-03 11:37:46 +00:00
robocop
3e66cd45f5
Comments.
2009-08-20 11:18:57 +00:00
dimitr
17b630c1fe
More optimizer adjustments + named constants instead of hardcoded numbers.
...
In particular, this commit should resolve the degraded restore performance.
2009-08-19 09:18:30 +00:00
dimitr
ee941f9a3d
Misc.
2009-07-08 15:09:47 +00:00
robocop
f7bf07d9be
Style.
2009-07-03 11:02:17 +00:00
uid32383
e704280a59
Style.
2009-06-28 10:29:36 +00:00
dimitr
77dce5ac12
Fixed some issues with the optimizer, namely: (1) incorrect cost calculation for indexed retrievals in joins and (2) too pessimistic heuristics for indices with zero selectivity.
...
Also, I removed the restricition I put recently to address some issues reported in the tracker (it's no longer necessary).
2009-06-19 11:33:12 +00:00
dimitr
a082a6fba6
Slightly changed a bugfix for CORE-2078 to avoid affecting indexed retrievals.
...
It's a compromise targeted to resolve any regressions in v2.1.2 (like CORE-2411).
2009-05-14 15:41:48 +00:00
robocop
66b1227b22
Unused params, some formatting, cleanup.
2009-05-01 17:21:36 +00:00
robocop
888000e21e
Unused function params.
2009-04-26 10:24:44 +00:00
robocop
a730fbf074
Get rid of more typedefs.
2009-04-03 10:07:55 +00:00
robocop
3689f15321
Style.
2009-01-20 08:33:59 +00:00
robocop
582cdf185b
Style.
2009-01-14 09:19:00 +00:00
robocop
6406e45337
Shut up compiler warnings (unreferenced vars, uninitialized vars, compile-time conditional code, etc.)
2009-01-02 06:36:12 +00:00
asfernandes
5c97a235e3
Misc
2008-12-24 00:32:49 +00:00
robocop
2fadc0e456
Style.
2008-12-22 09:00:05 +00:00
asfernandes
5311dd5a5e
Misc
2008-12-20 19:57:43 +00:00
robocop
9161be9116
Style.
2008-12-18 11:29:10 +00:00
dimitr
4fabeb3c6a
Misc.
2008-11-23 12:53:29 +00:00
dimitr
6e4c0cd099
A better solution for CORE-2200 (Extremely slow executing a cross join of 3 tables in Firebird 2.X).
...
This time an optimizer level one.
2008-11-23 12:49:33 +00:00
alexpeshkoff
d8ea120ded
AIX port - use FB_ prefix for alignment constants
2008-11-05 11:26:23 +00:00
robocop
43ee87b07d
Misc.
2008-10-21 04:25:49 +00:00
asfernandes
ad716e38d9
Misc
2008-10-20 23:46:46 +00:00
dimitr
a58aaafdf2
Fixed CORE-2132: Indexed retrieval cannot be chosen if a stored procedure is used inside the comparison predicate.
2008-10-19 12:05:36 +00:00
asfernandes
7a5b0121d8
Misc
2008-09-14 23:17:58 +00:00
asfernandes
25d751ea32
New methods for array classes
2008-09-14 22:45:00 +00:00
dimitr
ddb3e8f07c
An attempt to fix CORE-2078. This approach is hopefully a bit more clever than the pre-ODS11 one.
...
I'll be waiting for the customer's report before backporting into v2.0/v2.1.
2008-09-12 14:36:14 +00:00
dimitr
407a4741f8
Cleanup.
2008-09-12 09:19:32 +00:00
dimitr
aad133369c
Cleanup.
2008-09-12 08:48:47 +00:00
asfernandes
22c65f0153
Misc
2008-09-10 02:21:13 +00:00
robocop
26727ea6c8
Misc.
2008-09-09 09:05:49 +00:00
dimitr
278d0f8ad6
Fixed CORE-2073.
2008-09-09 08:23:24 +00:00
asfernandes
b550749a47
Fixed CORE-1246 - Incorrect column values with outer joins and derived tables
2008-09-07 19:44:48 +00:00
asfernandes
84da641b55
Fixed CORE-2034 - Problems related to CORE-1254 (Problem with DISTINCT and insensitive collations) re. UNICODE insensitive collations with DISTINCT or GROUP BY.
2008-08-08 01:44:42 +00:00
asfernandes
628cccf32e
Misc
2008-07-16 13:55:41 +00:00
dimitr
e4e437eb3b
Relation must be locked for any DPM access. As it's normally done after request optimization, I put an extra lock into the optimizer.
...
This is one of the possible reasons for CORE-1938 to appear.
2008-06-26 11:01:07 +00:00
dimitr
e0c6d0e13d
Fixed CORE-1812.
2008-05-06 09:40:22 +00:00
robocop
61662f5b5b
Constness and style.
2008-04-19 09:42:01 +00:00
dimitr
9d9250a255
Misc.
2008-02-20 08:06:56 +00:00
robocop
4c3381ef6b
Style, constness and macro cleanup.
2008-02-03 10:41:44 +00:00
dimitr
6992f2a638
The merge continued.
2008-01-16 09:41:31 +00:00
alexpeshkoff
eea9070f48
Optimized RuntimeStaticstics (and related part of ThreadDb) for performance - some tests run 25faster
2007-12-03 15:46:39 +00:00
dimitr
914ddbb957
Fixed CORE-1549.
2007-10-29 17:56:28 +00:00
asfernandes
595a185dd3
Rework fix for CORE-1245 to fix:
...
CORE-1246 - Incorrect column values with outer joins and derived tables,
CORE-1306 - Indices not used for views
2007-06-08 02:20:00 +00:00
asfernandes
166fc0b865
Misc
2007-04-13 01:37:44 +00:00
asfernandes
8c7076b67f
Port of Yaffil builtin functions
2007-04-12 15:56:34 +00:00
alexpeshkoff
f0d465bf34
Fixed gcc warnings, general (un)signed usage cleanup
2007-04-11 09:28:50 +00:00
asfernandes
032de38ae8
Fixed CORE-1153 - Activating index change "STARTING" working as "LIKE" in join condition
2007-04-01 15:50:54 +00:00
dimitr
a4f78f4365
1) Fixed CORE-925
...
2) Added assertion to EVL to catch other related bugs
3) An attempt to simplify my previous solution
2006-09-12 11:36:18 +00:00
aafemt
e6151fd57f
Warnings
2006-09-01 10:51:57 +00:00
asfernandes
18b57e55b5
Misc
2006-08-27 02:48:51 +00:00
hvlad
bcb2836eb1
Cleanup
2006-08-26 12:24:11 +00:00
hvlad
ece81ac260
Proper but more complex fix for CORE-904: new ODS11 optimizer used unnecessary huge amount of memory while processing IN list with large number of items.
...
Use Firebird::ObjectsArray instead of Firebird::Array and remove IndexScratchListHolder as unneeded
2006-08-26 12:12:30 +00:00
asfernandes
fc0649ef17
Misc
2006-08-19 01:07:12 +00:00
hvlad
217511b0f2
Fix for CORE-904: new ODS11 optimizer used unnecessary huge amount of memory while processing IN list with large number of items
2006-08-18 20:48:26 +00:00
dimitr
4354b994b3
Cleanup.
2006-07-31 08:46:58 +00:00
dimitr
b1aab1da09
Typo.
2006-07-28 09:35:31 +00:00
dimitr
af6cdd9262
More protections.
2006-07-28 09:15:32 +00:00
dimitr
cffe207614
A few fixes for the monitoring tables.
2006-07-23 12:14:59 +00:00
alexpeshkoff
4c3fe4e7d3
Use MIN/MAX from common.h instead of STL templates
2006-06-06 11:30:43 +00:00
robocop
3fa49e994b
Style and typo correction.
2006-05-26 05:19:48 +00:00
dimitr
937008d479
Fixed a number of bugs related to the lost scale when matching some value to an int64 key.
2006-05-23 09:56:29 +00:00
dimitr
8c66a4883a
1) Fixed wrong ALL results in the ODS11 optimizer.
...
2) Fixed SF #527681 -- Strange/Inconsistent query results
2006-05-17 19:15:41 +00:00
dimitr
d42818dadc
More precise calculation of index cardinalities.
2006-03-07 14:43:39 +00:00
robocop
3389149564
The files rng.cpp, rng.h, rng_proto.h, bookmark.cpp and bookmark.h belong exclusively to PC_ENGINE, that's obsolete functionality.
...
Tenth step: some code was tagged PC_ENGINE but was for SCROLLABLE_CURSORS instead, hence restore it. Also, clean unused data members, obsolete BLR verbs and the like.
2006-02-07 08:08:49 +00:00
dimitr
819c970570
Temporary rolled back one one of my previous fixes due to discovered issues.
2006-01-19 16:53:22 +00:00
dimitr
1293d9fd97
Fixed bug related to expression indices vs. collates, reported by Ivan.
2006-01-15 16:04:39 +00:00
arnobrinkman
78dcb398ef
Fix bug with lower/upper -exlude flag for indexes
2006-01-15 13:19:05 +00:00
robocop
1ca7a582f9
EXPRESSION_INDICES code is considered stable and therefore there's no need to keep it protected by macros. Please do a full rebuild.
2006-01-14 07:00:44 +00:00
dimitr
88f5a0d05e
Fixed the issue related to non-indexed relationships (reported in fb-devel).
2005-12-19 13:59:03 +00:00
dimitr
7981fef9be
Fixed optimizer. Some adjustments may follow.
2005-12-17 10:37:58 +00:00
arnobrinkman
5a38bd903d
Another "workaround" for prepared statements on empty tables.
...
To be reviewed by Dmitry Yemanov.
2005-12-13 23:19:26 +00:00
hvlad
5160d8a9d4
Use EXE_find_request in optimizer at index expression comparison to avoid AV in case of using index simultaneously in some connections
2005-12-05 22:13:00 +00:00
robocop
84fb43d1c1
Misc.
2005-11-26 09:10:51 +00:00
arnobrinkman
06ffac16d0
Fix explicit PLAN issue with ODS11 optimizer
2005-11-25 12:49:14 +00:00
dimitr
060d5b9ce8
Fixed wrong optimization of join orders.
2005-11-23 14:22:06 +00:00
arnobrinkman
70f23e227f
no message
2005-11-19 18:45:11 +00:00
robocop
105cd42e21
Non-member functions that are used in other modules should have a prefix.
...
Created a couple of temporary vars for code simplification.
2005-11-06 01:56:03 +00:00
arnobrinkman
94e7337628
Use candidate cost for decision which candidate to use.
...
Stop using indexes when total cost is greater as the previous used total cost.
Fix excludeLower/exludeUpper problem with using more operators to the same field.
2005-11-05 14:50:01 +00:00
hvlad
15ac3a9f47
Fixed SF #223060
...
Slow processing of GREATER-THEN operator
2005-10-27 21:52:17 +00:00
dimitr
68a2827d2e
1) Commented code that doesn't work properly (until Arno is back).
...
2) Fixed some optimization issues in the new logic.
3) Small cleanup.
2005-09-08 10:22:59 +00:00
dimitr
6e927365fb
Fixed server crash in the optimizer.
2005-08-22 08:34:50 +00:00
robocop
132eedb7a6
Misc.
2005-08-12 08:05:53 +00:00
arnobrinkman
c3f9c5bebc
Some more cost based calculation. Fine-tunning will follow
2005-08-08 22:17:40 +00:00
aafemt
b61d8b3c17
Warnings
2005-06-22 05:13:54 +00:00
asfernandes
890494ac7c
1) Fixed SF #1016040 Missing external libraries causes engine exception
...
2) Use better error messages
2005-06-14 03:16:54 +00:00
asfernandes
559ce29c51
1) Replace length_ to strlen as noted by Claudio and Dmitry
...
2) Change USHORT to ULONG in intl.cpp
2005-06-06 18:14:10 +00:00
robocop
b8d1f00f94
- Corrections and changes to Adriano's commit, subject to his inspection.
...
- Solved an endless loop with trim and zero-length trim characters, etc.
- Some places are signaled with FB_COMPILER_MESSAGE for prompt attention.
2005-06-06 08:30:03 +00:00
asfernandes
ad1a65f798
Apply forgotten opt.cpp changes in Optimizer.cpp
2005-06-03 01:25:47 +00:00
asfernandes
59213efe7e
Merge INTL branch into HEAD
2005-05-27 22:45:31 +00:00
arnobrinkman
b81de1aca4
more realistic cost value for unique retrieval
2005-05-23 23:19:43 +00:00
dimitr
8f13835656
1. Fixed bug with selectivity of non-equality comparisons.
...
2. A bit changed the invertions selection code to help in both MERGE and JOIN paths.
2005-05-18 14:43:36 +00:00
dimitr
0f9e349f19
Fixed a small OR handling bug.
2005-05-15 12:44:07 +00:00
alexpeshkoff
5729790ed6
1. Applied class MetaName
...
2. Small generic cleanup
2005-05-12 18:28:04 +00:00
hvlad
a3e64959da
Correction. Thanks to Claudio
2005-05-12 13:51:43 +00:00
hvlad
f1d576feb4
Fixed unregistered bug - "index key too big" when creating descending index
2005-05-07 19:45:57 +00:00
dimitr
c01b84565a
Tuned reduce factors again.
2005-04-23 12:16:11 +00:00
dimitr
79f50250ff
Third attempt to apply reduced selectivity properly.
2005-04-16 17:28:45 +00:00
dimitr
2045d89a76
Code simplification and some style corrections.
2005-04-16 16:57:06 +00:00
dimitr
4410fb9f97
1) Fixed wrong index usage for nested loop joins (indexed relationship must be a requirement).
...
2) Better optimizaton for tables with zero selectivities.
3) Fixed wrong choice of index in the case of the same selectivity and number of indices.
4) Fixed wrong total selectivity calculated for compound non-equality comparisons.
5) Some constants tuning based on two weeks of the extreme testing.
Subject of Arno's review, although all my tests show much better results without any regressions.
2005-04-15 14:54:59 +00:00
dimitr
fde48e9530
Moved page-level code to DPM.
2005-03-29 09:43:31 +00:00
dimitr
eaf99a7a0e
Second attempt to fix "divide by zero" issues in the optimizer.
2005-03-29 09:07:51 +00:00
dimitr
75d6a7c5a0
Oops.
2005-03-28 15:29:38 +00:00
dimitr
706a1b925d
Corrected previous commit + ODS11 branch.
2005-03-28 15:24:18 +00:00
dimitr
f5bb311b4b
Fixed "wrong page type" bugcheck.
2005-03-25 07:54:32 +00:00
arnobrinkman
2955e5e79a
Fix bug #1169728 with explicit navigational PLAN no comparisons in the WHERE clause were matched against the navigational index
2005-03-24 21:49:10 +00:00
dimitr
3075bdcdf2
1) Fixed bug with the lost sort node that caused unordered data to be returned.
...
2) Fixed badly optimized join orders in triggers.
2005-03-19 16:55:26 +00:00
aafemt
2f6d857bc9
There is no need for MSVC hacks if MSVC is not used
2005-03-10 10:27:17 +00:00
arnobrinkman
cd11c3a123
fix divide by zero issues and add some comments
2005-03-07 22:59:13 +00:00
dimitr
78617a7154
Fixed more issues with explicit plans.
2005-02-22 05:51:03 +00:00
robocop
854da4e241
Misc.
2005-02-21 06:01:01 +00:00
arnobrinkman
bb3560eb92
cosmetic changes
2005-02-17 00:17:05 +00:00
dimitr
e74888f7fc
Minor stuff.
2005-02-15 11:52:52 +00:00
fsg
9b7fcb5fa0
Fix Claudio's fix.
...
FSG
2005-02-15 10:03:53 +00:00
robocop
59b49cab6e
Temporary fix for problems reported by Alex and Frank.
...
Since this is Arno's new file, I didn't want to touch more.
Folks may prefer to use the ugly MIN/MAX macros (which I abhor) instead of the template versions in xutility, but I digress.
2005-02-15 06:39:53 +00:00
arnobrinkman
9ae0b6d273
simplify code and some cosmetic changes
2005-02-14 18:51:16 +00:00
robocop
5a951268ae
Don't know if gcc is going to accept the const member functions. There's a MemoryPool in the middle.
2005-02-14 06:05:57 +00:00
arnobrinkman
6f7813bf28
Remove some temp-code that was still left
2005-02-12 17:06:12 +00:00
arnobrinkman
283d7f0d8c
Add new optimizer logic for handling :
...
ODS11:
- segment-selectivity
- better support for IS NULL
- better support for STARTING WITH
- matching both OR and AND nodes to indexes
- pick better JOIN order based on cost rules
ODSx:
- Indexed order on OUTER JOIN queries
2005-02-10 22:54:17 +00:00