aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
Commit message (Collapse)AuthorAgeFilesLines
* Update background keepalive pings:rowanbeentje2010-09-031-11/+33
| | | | | | | - Fully lock the connection for background pings; this may slow down queries after connection disuse (when the keepalive is still active/blocked), but strengens thread safety to hopefully fix vio_delete crashes - Fix pthread_cancel use; previously pthread_cancel after a keepalive may have resulted in cancelling unrelated threads where the thread ID was reused This should increase stability and improve program consistency.
* - Add connection checks before uses of mysql_hex_string and ↵rowanbeentje2010-08-311-16/+51
| | | | mysql_real_escape_string (which require an active connection). This addresses http://spbug.com/l/54 .
* - Attempt more status checking before closing the MySQL connection, in an ↵rowanbeentje2010-08-301-3/+3
| | | | | | | attempt to further address http://spbug.com/l/13 - Update localisable strings
* - Improve background thread reconnect interaction with the interface; if ↵rowanbeentje2010-08-291-3/+10
| | | | the application is in a modal state, the background thread waits. This improves interface behaviour on multiple SSH disconnections after sleep/wake (finishing Issue #798) and also disconnections while the interface is modally locked (eg editing text/blobs).
* Encoding changes and improvements, particularly to increase compatibility ↵rowanbeentje2010-08-251-56/+168
| | | | | | | | | | | with extended characters in MySQL identifiers (names of dbs/tables/cols): - Move encoding queries and control into MCPKit, with newly cleaned-up methods, and switch a number of locations to using the new code. - Use UTF8 connections for many identifier-based queries (selecting and listing databases, tables, stored procs, table information). This fixes selection and creation of table and database names containing extended characters, also fixing exceptions and errors. - Improve UTF8 over Latin1 to correctly set the client character set encoding as well, fixing custom queries and edits; remove custom code in SPTableContent achieving the same thing in a single location. - Fix database encoding detection routines - Update localisable strings
* • made SP more robust against issues which are caused by different table ↵Bibiko2010-08-151-0/+4
| | | | name encodings
* • fixed: display tables and views correctly in auto-completion list and in ↵Bibiko2010-08-151-1/+1
| | | | the Navigator
* - Add support for automatically converting \r and \r\n linebreaks in query ↵rowanbeentje2010-07-291-0/+52
| | | | | | | | syntax to \n. This addresses Issue #652. - Clean up SPSQLParser, and use a few more CFString methods to avoid obj-c messaging in loops - When importing SQL using autodetect, perform a manual SET NAMES if possible to cope with poorly-exported files.
* - Clean up SPDataImport, removing unused methods and cleaning up order and ↵rowanbeentje2010-07-191-0/+13
| | | | | | | | | methods - Improve error handling when the connecting dies during import (previous the sheet would stay open) - Fix localised strings for error messages (label and text the wrong way round) - Improve comments
* - Clean up automatic reconnection coderowanbeentje2010-07-141-26/+49
| | | | | | - Allow keepalive pings to perform automatic reconnections after a few consecutive failures - Fix a number of keepalive ping bugs, including compatibility with the new threaded connection methods and reconnection timing issues causing keepalive pings to not fire correctly
* Improve handling of network drops, including a new automatic reconnection ↵rowanbeentje2010-07-131-7/+70
| | | | | | | | | | | | | attempt, as well as improved handling of networks not present. This addresses Issue #657. In MCPKit: - Disable MySQL automatic reconnection, and add our own reconnection code for greater consistency - If no network is available, delay reconnects by a short period to allow the network to come back up - Improved handling of proxy disconnects In SPSSHTunnel: - Improved handling of SSH tunnel disconnects, improving automatic reconnection via MCPKit and fixing potential memory/logic tramping. Also remove the "Retry" button from the Disconnected dialog, leaving only the choices "Reconnect" or "Disconnect".
* - Add default socket locations for Mac OS X Server and XAMPP to default ↵rowanbeentje2010-07-081-4/+6
| | | | | | | socket search paths - Reorder socket search paths to favour OS X locations
* Improved calling of stored procedures:jakob2010-06-301-2/+30
| | | | | | | - added the CLIENT_MULTI_RESULTS flag to the connection flags - automatically discard all remaining results when unlocking the connection This is not a perfect solution, but will improve usability a lot for those who often call stored procedures. Sequel Pro still doesn't support multiple results -- it will show only the first and silently discard all the remaining ones.
* - Improve MySQL 3 & MySQL 4 query cancellation and disconnection. This ↵rowanbeentje2010-06-161-44/+47
| | | | fixes a number of issues including http://spbug.com/l/13
* - Fix comment retrieval issues for <4.1 when retrieving db structure - ↵rowanbeentje2010-06-141-1/+6
| | | | addresses crashes http://spbug.com/l/540 and http://spbug.com/l/106
* - Ensure start/end query notifications are sent on the main thread to avoid ↵rowanbeentje2010-06-011-3/+4
| | | | | | | the interface being updated from the wrong thread on listeners - Add a "Support Files" folder to MCPKit, containing NSNotificationAdditions to support main thread notifications from within MCPKit
* Rename TablesList to SPTablesList.stuconnolly2010-05-271-1/+1
|
* Review queryDbStructureWithUserInfo:rowanbeentje2010-05-151-166/+127
| | | | | | | | - Remove extra call when changing databases, avoiding double calls - Fix an error if the document has had no encoding set yet (addresses http://spbug.com/l/200) - Tweak db struture querying to work on MySQL 3 and 4.0 - Rework function to remove duplicated logic, and to address a number of valueForUndefinedKey: exceptions logged via the bug tracker
* - Check return status when capturing query error message strings - this ↵rowanbeentje2010-05-091-2/+4
| | | | addresses http://spbug.com/l/250
* Rework alert sheets:rowanbeentje2010-05-091-5/+13
| | | | | | | - Change MCPConnection.m to no longer use a reference to tableWindow to attach sheets - instead use a delate error display method if available - Rework TableSource and TableContent sheetDidEnd methods into per-task methods rather than overloading contextInfo - Rework SPAlertSheets to perform actions on the main thread, with the loss of (unused) support for a didDismissSelector. This addresses a number of crashes logged by the crash reporter
* This changeset implements renaming and duplicating databases on a server. ↵drx7772010-04-281-11/+30
| | | | | | | | | | | | | | | | | | | Details as follows: * altered MCPConnection listTablesFromDB:like: to return NSArray * altered MCPConnection listFieldsFromTable:like: to use backtick quoted strings for table and fieldnames * added MCPConnection listTablesFromDB for a complete table list * added SPStringAdditions.h to various files to prevent warnings * added sheets for duplicate/rename DB in DBView.xib * added duplicate/rename menu items to MainMenu.xib * added outlets in TableDocument: databaseNewSheet databaseRenameSheet databaseCopyNameField databaseRenameNameField copyOnlyStructureButton copyDatabaseButton renameDatabaseButton * added methods in TableDocument: getConnection, copyDatabase, renameDatabase, _copyDatabase, _renameDatabase * added OCMock Framework for object mocking in tests * added group Others/DatabaseActions
* Add extra connection checking at multiple stages of getting the server's ↵stuconnolly2010-04-271-5/+7
| | | | process list. Fixes http://spbug.com/l/152.
* Bunch of improvements to the serve processes panel, including:stuconnolly2010-04-241-7/+7
| | | | | | | | | | - MCPKit's listProcesses (mysql_list_processes) method is now used, instead of running the query ourselves. - The ability to set whether or not the list is auto refreshed. - The ability to set the autorefresh interval, either via the presets or by entering a custom value (the interface for this might need updating). - Get the process list is now performed on a background thread. This completes the implementation of issue #607.
* Only attempt to check or set the max allowed packet if there is an active ↵stuconnolly2010-04-231-7/+14
| | | | connection as well as only displaying dialogs when there is a window visible. Fixes http://spbug.com/l/113.
* - changed the query locking mechanism for MCPConnection to be more thread ↵jakob2010-04-161-55/+83
| | | | | | | | safe. From now on, always use [self lockConnection] rather than [queryLock lock], independent of what thread you are running on - A warning is written to the console when the connection is unlocked multiple times (to identify potential race conditions) - modified MCPStreamingResult to ensure it only closes the connection once - added a check to prevent arrow key navigation past the last row
* Review usage of notifications, afterDelay: and waitUntilDone:NO calls:rowanbeentje2010-04-121-0/+1
| | | | | | | - Add more calls to deregister watchers to fix crashes to closing threads or objects - Fix a couple of memory leaks - Alter a few calls to be performed on main thread (afterDelay: operates on the thread is is called on) - this fixed database reloading after import and field/index deletion error sheets
* • improved querying db structure handlingBibiko2010-04-071-0/+21
| | | | - distinguish between any update tables list invoked by SP which causes a weak and quick refresh if nothing was changed and if the user pressed Table List Refresh button explicitly which will cancel any current db querying and pending ones
* • query db structureBibiko2010-04-071-57/+92
| | | | | | - improved encoding handling while querying - if SET NAMES ... fails bail to avoid exceptions - this should fix http://log.sequelpro.com/view/101
* - Improve on r2050, running reconnections after a proxy disconnect on a new ↵rowanbeentje2010-04-041-15/+22
| | | | thread to allow the UI to update and handle events on 10.6. Also clean up the logic in MCPConnection waiting for a proxy discoonect to handle more cases and simplify code.
* - Improve SPSSHTunnel question/password dialogs to no longer eat 100% CPU ↵rowanbeentje2010-03-311-2/+5
| | | | | | | | by switching from NSCondition blocking to NSLock blocking - Improve behaviour of SSH tunnels with no password in keychain - prompt appropriately - Set MXPConnection to check the proxy state when attempting to reconnect a dropped connection, extending the timer when an auth UI is up. This prevents a multiple-dialogs misbehaviour (or sometimes deadlock), addressing the last part of http://log.sequelpro.com/view/86 .
* • removed unnecessary retains, ergo fixed some memory leaksBibiko2010-03-311-11/+9
|
* • querying for db structure is queued for the same connection to avoid ↵Bibiko2010-03-311-315/+353
| | | | | | | | | | | 'overlapping' access to global variables • after querying db structure write back data on main thread • completion list displays animated sync images if connection is just querying db structure data • fixed some minor issue for completion list • make sure that if last window of a connection is closed all relevant data will be removed from global variables Note: please test!
* • next trial to make getAllKeysOfDbStructure thread safeBibiko2010-03-301-6/+28
| | | | | | | | • some speed improvements for navigator - pre-calculate display string for type info to avoid doing it all the time while refreshing the outline view • suppress double-clicking at a not yet queried db structure if the same connection is querying another structure to avoid accessing the same storage objects from different threads (test) • reload outline view after filtering in navigator runs in its own thread to avoid blocking SP • fixed memory leaks while returning [obj copy]
* • some speed improvements and code simplifications for navigatorBibiko2010-03-301-10/+12
| | | | | | • avoid making the completion key list unique since it's possible to insert unique items only • added trigger to query db structure after SQL import • some work to avoid http://log.sequelpro.com/view/90 (not yet ideally - WIP)
* • fixed several threading issues due to threadingBibiko2010-03-291-7/+9
| | | | | - collection classes as NSMutableSet are NOT thread safe! • further tiny speed improvements for navigator
* • added some more sanity checks to avoid exceptions due to threadingBibiko2010-03-291-3/+9
|
* • improved completion suggestion for db schemataBibiko2010-03-291-3/+5
| | | | | | | | - if user typed "foo." and there's an unique schema path regardless cases (like there's an item Foo) show the content of the path Foo - now getUniqueDbIdentifierFor:term returns an array of found type (db or table) and the found string to handle case better for completion • tried to speed up the search in the navigator by using a NSPredicate • [MCPConennection allKeysofDbStructure] - fixed issue while returning if allKeysofDbStructure == nil
* • fixed several issue for completion listsBibiko2010-03-291-73/+58
| | | | | | | • improved gathering and caching of structure data coming from connection windows with the same connection • made the structure querying more stable against threading issues • moved getUniqueDbIdentifierFor from MCPConnection to SPNavigatorController to be up-to-date in all connection windows • improved detection if db structure querying should be performed or not (not yet finished)
* - db structure for tables and views will now be queried by using SHOW… ↵Bibiko2010-03-281-101/+187
| | | | | | | | | | | statements - completion now works for server versions < 5 as well - proc/func info will be queried by using information_schema for mysql >= 5 - changed completion logic to handle new format - completion will get the info from SPNavigator since this controller caches all information about db structure - optimization and fine-tuning will follow very soon
* - Improve MCPConnection behaviour with respect to run loops and proxies, ↵rowanbeentje2010-03-271-7/+29
| | | | | | | improving both proxy disconnection and reconnection after dropped connections - Slightly tweak SPSSHTunnel to improve proxy behaviour
* - When switching tables, correctly catch disconnections and suppress error ↵rowanbeentje2010-03-271-4/+4
| | | | | | | | | dialogs and related crashes - Move connection error sheet close method to the connection delegate - Tweak the information_schema db schema building query to be much faster on busy servers by amending the VIEW part - Set the connection lock to nil after releasing, coping with connection unlocks deferred on the main thread until after dealloc
* • navigatorBibiko2010-03-261-5/+6
| | | | | - fixed issue if different connection windows are connected to the same connection - prepared structure querying method to be able to add user info containing which table/db was changed if we know it to reduce the future parsing cost
* • Navigator and completion listBibiko2010-03-261-47/+51
| | | | | | - fixed issues for deletion of a db like remove all relevant items and refresh the navigator - simplified and minimized code and memory usage while querying the connection structure - whether a schema name is an unique db or table will be evaluated on run-time via allKeysofDbStructure
* • first steps to ease the structure querying for auto-completion and navigatorBibiko2010-03-261-33/+75
| | | | | | | - now it accumulates the data and caches them db by db, ie one has to select a db before using its structure for completion and navigator - next step is to avoid querying info_schema as much as possible - it will only query the structure if something was changed - next steps follows as soon as possible
* Revert a change made in r2005 by not waiting on the completion of calls to ↵stuconnolly2010-03-261-1/+1
| | | | unlockConnection on the main thread.
* Minor MCPKit tidy up, including the resolution of potential issues raised ↵stuconnolly2010-03-261-14/+20
| | | | during static analysis.
* - Simplify connection keepalives, moving to a single repeating timer on the ↵rowanbeentje2010-03-261-83/+36
| | | | | | | | main thread. This cleans up calls, results in small speed improvements when making lots of queries (no more stopping/starting of keepalives), and ensures only the main thread handles the initial keepalives. - Move connection unlocking to a blocking call to fix http://log.sequelpro.com/view/73 - Fix memory leaks caused by non-detached pthreads
* Suppress the connection structure query if there're more than 10000 items ↵Bibiko2010-03-251-2/+24
| | | | are listed in `information_schema`.`COLUMNS` for now which is a 'quick-fix' for i608. In the near future the gathering routine will do it db/table by db/table to minimize the traffic starting from the current selected db.
* • NavigatorBibiko2010-03-251-0/+22
| | | | | | | - first implementation of a search functionality, workable but tiny issues have to be improved - up to now the only search implemented is 'contains', regexp/fuzzy search will come soon - the search is only performed in the main outline view, the upper one is static - for the new search store all available schema paths uniquely in an array which will be set during queryDbStructure (this avoids re-parsing of a dict structure)
* • NavigatorBibiko2010-03-251-5/+5
| | | | | | - make usage of a notification sent by the [MCPConnection queryDbStructure] to update the navigator, and this decouples a doc window and MCPConnection from the navigator - minimized the tree update - now connectionID-based - any tree update will be now performed on main thread and waits until done to avoid 'overlapping' updates triggered by different notifications which normally ended up in an inchoate tree display