8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-31 11:23:02 +01:00
Commit Graph

311 Commits

Author SHA1 Message Date
robocop
365de0fa48 Misc. 2004-12-16 03:10:20 +00:00
arnobrinkman
08ef027dfa fix wrong join order with parameters/variables/constants after my last commits 2004-12-15 20:12:27 +00:00
robocop
308bdd3de1 Misc. 2004-12-07 00:33:16 +00:00
arnobrinkman
e25f925d8e Improve cross join and merge/sort handeling 2004-12-03 23:56:51 +00:00
robocop
af6a16107a Misc. 2004-11-30 06:18:39 +00:00
arnobrinkman
e8e46c3381 1) Try to make new nodes from conjunctions applied to the top RSE of a UNION.
Deliver the new nodes (created per rse inside the union) to the optimizing phase of every rse.
2) Little refactoring of above function and the one for aggregate
2004-11-28 23:09:37 +00:00
dimitr
f570023657 Improved optimization of mixed AND/OR predicates. 2004-11-27 20:54:52 +00:00
arnobrinkman
eca3322cd2 Distribute HAVING clause conjunctions to the WHERE clause when possible.
This will improve VIEWs that contain a aggregate query and comparisons are done on fields from that VIEW that are also part of the GROUP BY clause.
2004-11-27 00:52:10 +00:00
arnobrinkman
2e8c916482 fix bug with partially matched lower bounds on descending multi segment index. 2004-11-23 22:43:26 +00:00
skidder
c40eb08a27 Remove CURRENT_DATABASE keyword 2004-11-22 20:50:34 +00:00
dimitr
b741e2c136 Fixed bugs SF #459059 and #543106. 2004-11-17 19:33:11 +00:00
skidder
1e26d6c80d CURRENT_DATABASE implementation. Established identity may also be used for isc_info_db_id datum 2004-11-11 05:37:52 +00:00
robocop
628b088d2c Treat string literals and string constants with more respect. 2004-11-10 04:26:45 +00:00
arnobrinkman
5f13621bf9 1) fix outer join issues
2) fix problem with ORDER BY <index> and missing NULLs
2004-10-26 22:23:56 +00:00
dimitr
09c51110b4 Added the equivalence operator. The major index optimizations are done.
Notes:
1) Some optimizations will follow after more deep analysis.
2) The syntax "==" is not yet agreed on. I'd prefer it to be changed.
2004-10-14 19:09:19 +00:00
dimitr
421f259a4e 1) Locks related cleanup
2) Got rid of TRA_nowait + transaction waits related cleanup
3) Return isc_lock_timeout when it's necessary
TODO: Enhance SET TRANSACTION
2004-10-07 09:15:32 +00:00
skidder
02a0915156 Teach engine to work with larger record numbers - 64-bit internally, 40-bit externally 2004-09-28 06:28:38 +00:00
dimitr
0551c0fcb6 Fixed some issues with expression indices. 2004-09-26 12:37:24 +00:00
dimitr
47d00c34e0 A number of little corrections. 2004-09-13 21:06:41 +00:00
dimitr
a975c23a96 Fixed the context pool management. 2004-09-03 06:10:23 +00:00
dimitr
270841c3e9 More EXPRESSION_INDICES changes. 2004-09-03 05:27:44 +00:00
dimitr
62c11614fc Let's choose a reasonable join order for intermixed inner and outer joins. 2004-09-02 14:53:43 +00:00
dimitr
7f16a055e9 A few little fixes in the optimizer. 2004-09-02 14:43:26 +00:00
alexpeshkoff
c3db4aaa97 added (and used in sources) template to change and restore default pool 2004-08-30 18:11:08 +00:00
robocop
3a45a04ea7 MSVC6 doesn't keep variables in a for() only in that scope. This standard construction is rejected:
for (int i = ...);
for (int i = ...);
Put the variable again before the loops to be able to compile.
2004-08-27 04:46:01 +00:00
brodsom
15a5a276da Fix signed/unsigned comparisons 2004-08-26 21:47:19 +00:00
robocop
b60c0e4cab Misc: format 2004-08-21 09:29:46 +00:00
dimitr
cfb0e2eb5a More asserts and some style changes. Thanks to Claudio. 2004-08-20 07:55:09 +00:00
dimitr
89a31cdd07 Make EXPRESSION_INDICES generally working. 2004-08-20 04:04:06 +00:00
dimitr
d09aa165db The EXPRESSION_INDICES code now compiles. 2004-08-19 18:41:19 +00:00
dimitr
ca4ea54a1e Small optimization of multiple OR booleans (or a constant IN predicate).
The idea is to use a single sparse bitmap for an index matching and hence avoid OR'ing bitmaps for every argument value.
Ported from Yaffil.
2004-08-17 17:52:19 +00:00
alexpeshkoff
31039a254e next step preparing to allocate auto objects memory from appropriate pool 2004-08-16 12:28:43 +00:00
skidder
311d7b4b34 Fix a couple 'invalid read' problems found by Valgrind. Both could cause crashes, one could result in invalid nulls placement. Removed const*const*const stuff in couple places because things like that make code really hard to understand 2004-08-11 05:34:23 +00:00
arnobrinkman
f42e0e4f55 Bugfix with OUTER JOINS
Finally i got them as they should have been
2004-08-07 16:49:00 +00:00
arnobrinkman
f2345109a0 Bugfix: optimizer didn't add boolean-node when it was a OR operator and no index could be used.
This caused unnecessary evaluation of joined rse's to that rse.
2004-07-20 18:55:03 +00:00
arnobrinkman
401fb7d12f 1) Fix starting with and empty string index problem where empty string is passed in parameter. (STARTING WITH ?) ? = ''
2) New index structure ensures that NULLs cannot hold the same key-value as a data value.
3) Ignore NULLs already on scanning index where possible.
2004-07-15 23:01:12 +00:00
skidder
2915fcf547 Somewhat simplify invariant tracking stuff. It is more pessimistic now, but should work more reliably when invariants are modified (see QMDB tests for details) 2004-06-25 22:12:20 +00:00
skidder
5f43cf8683 Report PLANs for selectable procedures in correct order. This is a fix for regression which I introduced a few months ago and it was found by Vlad Horsun 2004-06-23 16:40:19 +00:00
alexpeshkoff
1591a54e5e Thread cleanup:
1. Added macros to declare thread entrypoints
2. THD_mutex_* functions use Firebird::Mutex
3. Thread local storage use fb_tls.h
2004-06-08 13:41:08 +00:00
alexpeshkoff
9a34ce553c make bool (isEmpty/hasData) checks for string and stack safe 2004-05-27 16:26:52 +00:00
alexpeshkoff
2f99a5ebf1 small strings cleanup 2004-05-26 16:12:05 +00:00
brodsom
f4ca41fa3d -Replace *_thread_data macros with inline functions (jrd step 1) 2004-05-22 14:28:54 +00:00
robocop
441817bd82 1.- Misc changes
2.- Style
3.- Recover dsc_ttype in dsc after Blas' cleanup as a synonym for dsc_sub_type in text types
2004-05-21 06:16:17 +00:00
brodsom
68cb86b274 - Remove *_THREAD_DATA definitions from thd.h, are unneeded and conflicts with definitions in providers/services main headers (which need to use undef).
- Use different names for each service/provider *_THREAD_DATA macros.
2004-05-19 18:14:29 +00:00
brodsom
1ffe279896 -Avoid shadow warning 2004-05-12 19:39:17 +00:00
brodsom
b30a0b8799 Macro cleaning 2004-05-12 00:02:37 +00:00
robocop
802f244ec1 Misc changes 2004-05-09 05:48:33 +00:00
brodsom
c8db819ac5 Replace defines with consts 2004-05-07 07:57:46 +00:00
arnobrinkman
8e472b4fc4 Fix bug with slow MERGE
Fix bug with FULL JOIN and IS NULL in where clause.
  SELECT * FROM TableX FULL OUTER JOIN TableY ON (...) WHERE TableY IS NULL
2004-05-06 22:06:56 +00:00
brodsom
60d9d085a0 Macro cleaning 2004-05-03 21:43:56 +00:00
skidder
43cb0d1ce4 Y-Valve handle translation layer 2004-05-02 23:06:37 +00:00
brodsom
5cf9fdfc90 Removing ib_stdio.h 2004-04-28 22:43:34 +00:00
skidder
7e7b6f604c Slightly better fix for the FBTCS problem spotted by Blas 2004-04-28 17:28:33 +00:00
skidder
5f909e21b8 Fix for FBTCS Join 17 testcase 2004-04-28 05:18:27 +00:00
hvlad
2afe197918 Added Stack::iterator::hasMore method. Replaced getCount() and notEmpty() with hasMore() when it's possible 2004-04-23 08:02:52 +00:00
alexpeshkoff
7b27fa55be fixed number problems after lls to Stack conversion 2004-04-21 14:14:36 +00:00
alexpeshkoff
176041c63e applied fixes, mentioned by Claudio 2004-04-19 13:40:30 +00:00
alexpeshkoff
045e9dc8ec 1. removed any mentions of blk_pool() from engine (and method itself)
2. replaced 'struct lls' with 'template Stack'
2004-04-18 14:22:27 +00:00
skidder
abdbec6f84 Switch to Firebird container templates for request resource tracking. This significantly reduces CPU time any memory consumption for databases with complex metadata 2004-04-18 02:50:38 +00:00
robocop
6d4c0ab908 Three changes to isql:
Fix isql bug #910430.
Add SET HEADING ON/OFF option
Add -M2 command-line option to send output of statistics and plans to the same file than the rest of the output.
Those items do not appear when using HELP SET inside isql or with isql -? from the command line.
2004-04-11 04:04:18 +00:00
robocop
59b235cea3 Small corrections 2004-04-10 00:25:22 +00:00
alexpeshkoff
1678d0f819 Returned opt.cpp to buildable state 2004-04-08 14:51:31 +00:00
alexpeshkoff
98aebc619a changed csb_index_allocation to Array from str 2004-04-01 16:32:54 +00:00
alexpeshkoff
4650f4975f string cleanup 2004-03-31 18:03:51 +00:00
aafemt
e20a3a4304 Fix variables' scope 2004-03-30 10:26:55 +00:00
robocop
faa41f7b3b Cleanup 2004-03-30 04:10:52 +00:00
robocop
1824343930 Cleanup.
Fixed a linking error with MSVC6, too.
2004-03-28 09:10:30 +00:00
alexpeshkoff
1e6c7b18e9 fixed problem with loop in includes 2004-03-22 11:38:23 +00:00
dimitr
441e9fbbd9 Correction. 2004-03-21 09:35:27 +00:00
arnobrinkman
b355d3411e 1) Fix bug with LEFT JOIN ViewX and where clause with ViewX.FieldX IS NULL
2) When FIRST / SKIP is used in a sub-query it may not be affected by conjunctions in higher contexts.
  Example (should return 1 row instead of 5):
SELECT * FROM
  (SELECT FIRST 5 SKIP 2 cs.* FROM RDB$CHARACTER_SETS cs)
WHERE
  RDB$CHARACTER_SET_NAME starting with 'D'
2004-03-21 02:07:48 +00:00
alexpeshkoff
7007d6f2a4 1. introduced Jrd and Ods namespaces
2. cleanup of blk* request conversions
3. fixed memory allocation in Execute Statement
2004-03-20 14:57:40 +00:00
robocop
8630547081 Cleanup. 2004-03-20 03:07:21 +00:00
aafemt
e2c3431671 Fix double const 2004-03-19 11:27:28 +00:00
robocop
958f9e31aa Cleanup
A few new[] - delete[] pairs fixed.
2004-03-19 06:14:53 +00:00
skidder
341c37033d Fix SF#918653, nulls placement ignored with queries using UNION, GROUP BY and DISTINCT clauses 2004-03-18 19:19:30 +00:00
robocop
f58c769c37 Cleanup. In geeky words:
PandoraBox* pbox = reinterpret_cast<PandoraBox*>(&can_of_worms);
pbox->open();
pbox->flush();
Nickolay may want to undo my ods.h changes if gcc insists
in its crusade against non-PODs and poodles.
2004-03-18 05:56:06 +00:00
alexpeshkoff
67f1740fea Various cleanup to make engine compile and work after mentioned earlier changes.
Mainly:
1) MemoryPool* => MemoryPool& in arrays' constructors
2) use Firebird::string to keep strings data
2004-03-14 13:40:14 +00:00
skidder
f015557545 GCC doesn't consider double const a valid C++ 2004-03-11 05:41:51 +00:00
robocop
2ab1f94dd2 Cleanup
Some minor corrections
Second step to rename
2004-03-11 05:04:26 +00:00
dimitr
9e5b3ef1a1 Added short-circuit optimization of user-supplied plans. Call find_best() exactly number-of-stream times. 2004-03-07 15:13:53 +00:00
robocop
e6187cecd2 Cleanup
Some bug fixes
Style
2004-03-07 07:58:55 +00:00
skidder
dc7aab8f9c Fix up exception handling. Handle (do not ignore) std::bad_alloc and generic exceptions, provide syscall and error information in system_call_failed 2004-03-01 03:35:23 +00:00
robocop
5c3c8abd9a Big cleanup.
God have pity on platform maintainers.
I only can compile/test Win32; sorry, folks.
2004-02-20 06:43:27 +00:00
robocop
663e3b16e7 Cleanup 2004-02-02 11:02:12 +00:00
robocop
2b295a9108 General cleanup. Sorry if I missed some occurrence. 2004-01-28 07:50:41 +00:00
skidder
08eee5ebaa Further AMD64 fixes. Given this fixes you may start playing with databases using isql_static. 2004-01-21 07:18:30 +00:00
robocop
b441cd9aef Cleanup 2004-01-13 09:52:19 +00:00
dimitr
64a481346f Fixed recently introduced regression. Never rely on vector data pointers after a grow() call. 2004-01-11 12:28:06 +00:00
skidder
f13d160aa5 Fix resource leak for recursive procedures when procedure request is closed at
SUSPEND statement. This leak prevented more then 1000 such operations for one connection.
This bug was reported by Claus Holst
2004-01-10 01:48:46 +00:00
skidder
09214e8669 Use backward-compatible default nulls ordering for old ODS as suggested by Dmitry Emanov to preserve backward compatibility 2004-01-08 21:29:34 +00:00
robocop
fd93837ec3 Cleanup:
const correctness
BOOLEAN -> bool
Vars in scope
Formatting
JRD_REQ -> jrd_req*
JRD_TRA -> jrd_tra*
JRD_REL -> jrd_rel*
JRD_FLD -> jrd_fld*
event -> event_t, EVENT_T dropped, EVENT should go in the future
Frank's corrections
alice's STR -> alice_str*
remote's STR -> rem_str*
etc.
It creates entities and backups and restores for me. :-)
2004-01-03 10:59:52 +00:00
skidder
d7fb2d6cb3 Integrate new LIKE/STARTING WITH/CONTAINING algorithms into the engine. This has following impact:
1. String functions now search BLOBs correctly
2. Their performace is improved
3. Fixed crash when NULL is passed as escape value to LIKE
2003-12-27 04:37:23 +00:00
robocop
ad0b5c4de3 General cleanup 2003-12-22 10:00:59 +00:00
skidder
e216f1f09d Implement MSSQL-like (standard conforming) behavior regarding default nulls placement.
Thanks to Arno changes we can map default placement to indices directly for ODS11+.
This should close SF#225218
2003-12-21 02:34:34 +00:00
arnobrinkman
bcaa8859d3 Fix some descending bugs i created 2003-12-11 23:06:36 +00:00
robocop
d020ea5ca1 ping-pong cleanup: change one place and you have to change several others 2003-12-11 10:33:30 +00:00
arnobrinkman
ce69dfce07 Fix bugs created by myself and the problem (finally ;-) why descending indices were slower as ascending in some cases. 2003-12-04 00:22:12 +00:00
robocop
84062732d8 More cleanup 2003-12-03 08:19:24 +00:00
arnobrinkman
710037031f Enhanced Index Structure.
1) NULLs on top when sorting on ASC index, DESC stays the same.
2) Support for larger index lengths, can be up to 1/4 page size.
3) Store record-number on non-leafpages for faster lookup in many duplicates.
4) Jump-nodes for faster key-lookup in index on larger page-sizes.
5) Segment selectivity calculation added.
2003-12-01 02:37:25 +00:00
dimitr
d0ad504f5e Minor protection against improper index locks reference. 2003-11-23 17:54:59 +00:00
dimitr
4c0ce86c24 1) Fixed server crashes when a SP is used as inner stream in left joins
2) Fixed conjuncts out-of-limits issue
2003-11-18 16:54:01 +00:00
dimitr
e255304619 Fixed new bug with explicit plans. 2003-11-12 18:30:25 +00:00
brodsom
4285bc623c Removing gdsold.h and gds.h 2003-11-08 16:40:17 +00:00
robocop
db77ffa605 const correctness, variables in scope, cleanup, etc. 2003-11-07 08:06:35 +00:00
dimitr
ef3c1183cb Correction. 2003-11-06 16:21:59 +00:00
arnobrinkman
22e26c7dbf bugfix: A user specified PLAN with MERGE and JOINS crashed the server, noted by Dmitry.
simplified : PLAN MERGE (JOIN ..., JOIN ...)
2003-11-06 00:25:48 +00:00
brodsom
ff070a16a8 Replacing assert with fb_assert 2003-11-03 23:59:24 +00:00
skidder
7b99b8a57b Basic INTL cleanup.
- Rework (mostly undo) John's changes
- Some function type safety
- Make INTL OO layer very thin (this should slightly improve performance)
2003-11-03 17:14:45 +00:00
dimitr
0856425a57 no message 2003-11-01 10:58:44 +00:00
skidder
908ae98a75 Return engine to compilable state on Win32 after Dmitry's cleanup 2003-10-30 21:17:16 +00:00
robocop
9ead7a37b4 const correctness
placed some variables in context
fixed some function signatures
closed a few possible buffer overruns
sorry to the platform maintainers, I can't verify what I did for non-Win32 builds
2003-10-29 10:53:47 +00:00
skidder
33ae7c50cb Make Linux SS engine compile. Noted by Blas 2003-10-20 12:27:00 +00:00
robocop
1e75492a50 Style: make the code more readable, keep spaces around operators 2003-10-20 10:18:41 +00:00
skidder
d7e24011b7 Clean up optimizer 2003-10-17 20:29:52 +00:00
arnobrinkman
fa934885e8 bugfix: Missing initialization of position vector. Thanks for Nickolay who notice this. 2003-10-16 21:02:51 +00:00
robocop
8182b6cba2 const correctness and other tasks 2003-10-16 08:51:06 +00:00
skidder
4e8605294e Forward port Sparc fixes 2003-10-10 23:56:57 +00:00
dimitr
7cc43e264a Fixed bug introduced one year ago. 2003-10-01 19:46:01 +00:00
skidder
235db035ce Ok, i'm joining Firebird destruction team with my cleanup:
1. Bring trace DSQL, DYN and BLR trace logging up-to-date
2. Remove redundant CSB pointer dereferences in BLR parser and request compiler
3. Convert RIGHT JOIN to LEFT JOIN early during BLR parsing
4. Check BLR syntax for unititalized contexts usage
5. Some type-safety and const-correctness fixes
2003-09-28 21:36:05 +00:00
arnobrinkman
7e024c858e Remove IGNORE_NULL_IDX_KEY define.
Still to go : nav.cpp, nav_proto.h, ods.h, dba.epp
2003-09-16 23:19:46 +00:00
dimitr
f7aa490111 The final part of my little PLAN enhancement. 2003-09-14 15:37:05 +00:00
dimitr
5ec79f66ef PLAN enhancements. The DSQL part of this change will follow. 2003-09-10 13:24:49 +00:00
arnobrinkman
6770751035 Don't forget the OR operations Arno 2003-09-08 08:56:13 +00:00
brodsom
382cd1c45e Code cleaning 2003-09-08 01:45:09 +00:00
arnobrinkman
75486586c9 Added some comments and boolean replacement 2003-09-04 21:37:55 +00:00
brodsom
f76f59a61e Replace BOOLEAN, TRUE and FALSE 2003-09-04 21:20:01 +00:00
arnobrinkman
bfd32caffa Fix wrong last commit :-( 2003-09-02 16:39:58 +00:00
arnobrinkman
e5574959ad Change BOOLEAN to bool type 2003-09-01 23:22:22 +00:00
arnobrinkman
df3c6abf15 1) fix: Unique index must be complete used else we keep on looking for another one.
2) MERGE can also handle expressions, stupid example :
  SELECT
    *
  FROM
    RDB$RELATIONS r,
    RDB$RELATION_FIELDS rf
  WHERE
    rf.RDB$RELATION_NAME || 'A' = r.RDB$RELATION_NAME || 'A'
3) Do some code style issues
2003-08-31 22:41:19 +00:00
arnobrinkman
5ce032f2d9 Optimizer fix. Compound-indices were choosen above single-indices where we need only the single-field-index. 2003-08-30 19:51:44 +00:00
brodsom
6a2ef35fda -Remove NULL_PTR
-Remove unneeded NULL casts
-Remove (void) function return cast
2003-08-28 13:16:03 +00:00
skidder
27ebbfe696 Get rid of alloca usage 2003-08-19 12:49:33 +00:00
skidder
b05dc24810 Forward port removal of artificial index number limitation from 1.0.3.
Fix bug in dbb_max_idx calculation. Do not port GC and metadata versioning
changes as they seem very dangerous to me.
2003-08-18 21:13:56 +00:00
brodsom
daf2d5ff2c -Fix cast warnings
-Fix signed/unsigned comparison warnings
-Fix format warnings
-Add MinGW 3.0 rc header
2003-08-09 21:15:32 +00:00
arnobrinkman
e091f9e9c3 bugfix: All flags csb_flags were cleared except csb_active. Thanks to Claudio V. 2003-08-08 21:35:27 +00:00
dimitr
38a973d2b1 Let's fix the cause instead of the effect. No more buffer overflows. 2003-07-15 13:35:23 +00:00
alexpeshkoff
5933e22503 added static function declaration 2003-07-08 12:26:44 +00:00
alexpeshkoff
8ecb3a933b fixed AV on some combinations of CAST, BETWEEN and sub-select 2003-07-08 12:12:34 +00:00
dimitr
7374918a78 Bugfix for SF #736318. 2003-06-27 17:04:07 +00:00
arnobrinkman
ec7ff125ce bugfix: When 1 merge was done no other merge could be generated. for example with 4 stored procedures. 2003-06-26 22:14:55 +00:00
arnobrinkman
d26fd757cb bugfix: More bugfixes for 'no current record for fetch operation' errors.
These were mostly related to queries where a MERGE was done and/or SP/VIEW/Aggregates/Unions were used together.
2003-06-09 23:04:29 +00:00
dimitr
cb844e541a Fixed random crashes with big queries prepared. 2003-06-05 16:09:37 +00:00
arnobrinkman
98b28378a9 bugfix FB1.5: Optimizer crashed when all indices of a table had the selectivity of 1 2003-05-16 22:15:39 +00:00
brodsom
a4903c9278 - Comment unneeded checks or conditions 2003-04-02 11:13:11 +00:00
dimitr
46fd65228a Cleanup. 2003-03-25 09:51:52 +00:00
dimitr
20ce2e24d8 Fixed optimizer bug introduced by me appr. one month ago. 2003-03-25 09:40:15 +00:00
tamlin
de27710a5e Fixed a comment mistake (*/ leftover at EOL of //) spotted by Claudio. 2003-03-09 09:06:47 +00:00
brodsom
a808195f28 Avoid undefined function warning 2003-03-07 00:36:44 +00:00
tamlin
3ef654d69f Just a bit of cleanup, nothing interesting. 2003-03-02 16:17:08 +00:00
arnobrinkman
28c3eb69a3 Comments added 2003-02-27 23:07:15 +00:00