aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/MCPKit
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-252-74/+180
| | | | | | | | | | | 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-192-0/+15
| | | | | | | | | 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
* Improve handling of BIT fields, including:stuconnolly2010-07-151-3/+32
| | | | | | | | | - Exporting BIT fields properly in SQL dumps using b'x' notation. - Properly handling editing of BIT fields in both the content and custom query results views. - Correctly display BIT fields in the content view, where binary values are zero-padded to the specified length of the field. (Note, that the new BIT handling logic has only been added to MCPKit's MCPStreamingResult and MCPResult as the latter does not keep a record of the field's length which the new functionality depends on. Needs to be discussed).
* - Clean up automatic reconnection coderowanbeentje2010-07-142-27/+50
| | | | | | - 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-132-7/+71
| | | | | | | | | | | | | 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-302-2/+31
| | | | | | | - 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-013-3/+115
| | | | | | | 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-282-12/+32
| | | | | | | | | | | | | | | | | | | 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
* - Upgrade MySQL libraries to 5.1.46 (was 5.1.44)rowanbeentje2010-04-273-2/+2
| | | | | - Alter build scripts to use --enable-local-infile as a configuration option; this addresses http://spbug.com/644
* 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.
* Enable all *reasonable* warnings for all build configurations and fix a few ↵stuconnolly2010-04-262-2/+2
| | | | of them.
* 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-164-69/+127
| | | | | | | | 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-072-0/+22
| | | | - 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-072-57/+98
| | | | | | - 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-312-316/+361
| | | | | | | | | | | '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-292-8/+10
| | | | | - 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-292-74/+65
| | | | | | | • 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-282-101/+197
| | | | | | | | | | | 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-262-6/+7
| | | | | - 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-262-49/+57
| | | | | | - 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-262-35/+92
| | | | | | | - 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-267-47/+128
| | | | during static analysis.
* - Simplify connection keepalives, moving to a single repeating timer on the ↵rowanbeentje2010-03-262-89/+37
| | | | | | | | 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