| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
- Improve task support on previously supported views
- Use a threaded task load for all initial table loads
- Support threaded task loads for table content loads, reloads, sorts, and filters
- Improve upon previous threaded task loads by minimising view updates and supporting updates of the existing data arrays where valid
|
|
|
|
| |
functionality in place. This addresses r447, and threading will be reimplemented at a per-task level in the near future.
|
|
|
|
| |
main toolbar with constants.
|
|
|
|
| |
instead prevent selection/editing/sorting in code; this prevents the tableviews from going grey during the load and minimises flicker and loss of focussed elements.
|
|
|
|
|
|
|
| |
threaded queries
- Alter task notifications to pass the TableDocument as the notification object so that only the current window responds to the notification, allowing other windows to be fully used while a window is performing a task
|
|
|
|
|
|
|
|
| |
custom queries in a background thread with the task interface active.
- Rework custom query result processing to allow display of results as they come in
- Fix a memory leak
|
|
|
|
|
| |
- Correctly update the table content count when duplicating a row, and cancelling the add. This addresses issue #440.
|
|
|
|
| |
table redraw on new data, and increase the accuracy of the determinate progress as forced redraws are no longer an issue
|
|
|
|
|
|
|
|
|
| |
data loading:
- Removal of AMIndeterminateProgressIndicatorCell, and addition of a custom fork of YRKSpinningProgressIndicator which fixes bugs, adds threaded drawing, and adds a determinate mode.
- Addition of a task system within TableDocument, triggering display of a large central progress indicator and stopping the window from being interacted with in any way that would cause a query while the task is running.
- Add threaded TableContent content fetching, including use of the new task system and determinate progress bar; make fixes to improve threading stability and interaction.
|
| |
|
|
|
|
| |
LMITed or FILTERed but the table content is increasing. This addresses Issue #421.
|
|
|
|
| |
issues such as the one fixed in revision 1419. All future preference usage should be done so using these constants.
|
|
|
|
|
|
|
| |
'componentsJoinedAndBacktickQuoted'
• improved deletion of rows in tables which have no primary keys
- check for duplicated rows first; if no duplicates are found use all columns as 'primary keys' and delete the rows via … WHERE (a='…' AND b='…') OR (a='…' AND b='…') OR …
|
|
|
|
|
|
|
|
| |
construction loop, enormously reducing memory usage in big loops
- Use 64k chunks instead of 256k chunks - seems to give *much* better performance, possibly due to MySQL parsing/cache sizes (?)
- When restoring the query console to allow updates again after a loop, trigger a refresh of the view if the console is visible
|
|
|
|
|
|
|
| |
FROM `table` WHERE (`prikey1`='…' AND `prikey2`='…') OR (`prikey1 `='…' AND `prikey2`='…');
- changed error messages slightly while deletion
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mutable string to avoid crashes if array has a very large number of items (malloc error due to reassigning a NSString pointer)
• added to SPTableData method - (NSArray *) primaryKeyColumnNames
- returns all column names which are set as PRIMARY KEYs
- return nil if no PRIMARY KEY is set
• improved the deletion of rows
- if current table has only one PRIMARY KEY field delete all rows via DELETE FROM table WHERE pri_key IN (…) whereby the deletion query will be splitted into 256k chunks
Note: line 1790ff
It has to be implemented a workaround for tables with more than one PRIMARY KEY – maybe via DELETE FROM table WHERE ( (pri_key1='…' AND pri_key2='…') OR (… AND …) OR … ) splitted in 256k chunks as well
|
|
|
|
| |
editing of NULL fields in the editor sheet.
|
|
|
|
|
|
|
|
| |
LoadBlobsAsNeeded are not editable
• fixed issue if user tries to delete a row from a table without a primary key and Pref is set to LoadBlobsAsNeeded that a warning comes up and the table data keep unchanged
• if an error occurred while deleting rows reload the table data automatically for safety reasons
• fixed data cell class detection for returning argumentForRow: (typo after changing the internal logic)
|
|
|
|
|
|
|
|
|
|
| |
due to the fact that SP would crash if an error alert sheet follows
• fixed NULL value detection in method 'argumentForRow'
Notes:
- isSPNotLoaded check has to be implemented in line 1658
- hide blob data "(not loaded)" can be applied for tables which have no primary keys - we have to check the code again here
|
|
|
|
|
|
|
|
| |
- if set to YES the Console Log won't be updated after adding a new message even if the window is visible; this is useful if SP has to execute a large number of queries
• first steps to increase the deletion of a large number of rows in the Content pane
- removed deprecated 'selectedRowEnumerator'
- set Console Log's 'allowConsoleUpdate' to NO if more than 10 rows should be deleted
- instead of adding the successful deleted row indexes into a new array delete these indexes from the selectedRows NSIndexSet
|
|
|
|
| |
with a foreign key link within the same table - this improves compatibility for Issue #428.
|
|
|
|
|
|
|
| |
- Rewrite TableContent and CustomQuery to store NSNull and SPNotLoaded objects in the data arrays where appropriate, rather than providing string conversion on data load. Faster, simpler comparisons and processing code, slightly lower memory usage, and reduces the chance of bugs caused by inadvertantly processing the string values; we can now also distinguish easily between NULL and "NULL" etc, and further paves the ground for image representations of special values.
- Fix a bug caused by consistent value reloading when editing BLOB/TEXT columns with deferred loading - if editing a row and revisiting an edited cell, the original value was restored; the original value is now only loaded once.
This addresses the rest of Issue #423.
|
|
|
|
| |
placeholder values written to database. This addresses the data corruption part of Issue #423.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- user-defined content filter can be saved globally (Prefs) or in SPF files
- BETA - further tests are needed due to complexity
- SPQueryController now handles the local user-defined content filters
- tooltips are now generated automatically if not defined explicitly (incl. if $BINARY placeholder was used)
• if user added local query favorites or content filters to an Untitled document and s/he wants to close it the standard sheet will be displayed (Don't Save - Cancel - Save)
- due to that changed old [TableDocument displayName] to 'displaySPName' to be conform with Cocoa
• changed behavior while importing query favorites - now they will append at the list (not inserted after selected row - makes more sense)
• introduced to history filter dict the key 'menuLabel' which will be set to [TableContent tableFilterString] for displaying the history menu title and simplified the SPHistoryController logic for that
• minor code changes
|
|
|
|
|
| |
• fixed issue for "Add" a new favorite in SPQueryFavoriteManager:
- save pending changes in the query textView in beforehand
|
|
|
|
| |
selecting single tables after multiple tables are selected. This addresses Issue #372 and probably Issue #365
|
|
|
|
| |
a column, if that column value hasn't been changed by the user apply the CURRENT_TIMESTAMP appropriately. This addresses Issue #416
|
|
|
|
|
|
| |
• introduce a new placeholder $BINARY to the filter definition
- if user presses ⇧ while invoking the table filter and a filter had defined that placeholder the search will be case-sensitive; otherwise the placeholder $BINARY will be simply removed to search case-insensitive
- added tooltip for these string filters in ContentFilters.plist
|
|
|
|
|
|
|
|
| |
- 'is (not)' and 'contains (not)' are now defined as: take the argument literally, ie % and _ will be escaped automatically
- in string fields one can look for \n , \r , \t
- added LIKE and NOT LIKE operators to strings to be more transparent
- a routine detects automatically whether a placeholder was wrapped into ' or " and if so ' or " will be escaped
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- all default filters come from "ContentFilters.plist" which can be localized
main structure:
<plist>
<dict>
<key>number</key>
<array/>
<key>string</key>
<array/>
<key>date</key>
<array/>
</dict>
</plist>
filter item structure: [ ${} is a place holder for an argument ]
<dict>
<key>MenuLabel</key>
<string>BETWEEN</string>
<key>Tooltip>
<string>a tooltip</string>
<key>NumberOfArguments</key>
<integer>2</integer>
<key>ConjunctionLabels</key>
<array>
<string>AND</string>
</array>
<key>Clause</key>
<string>BETWEEN '${}' AND '${}'</string>
</dict>
- if NumberOfArguments == 0 then start filtering automatically
- now one can save his/her own filters in SP's preferences.plist (GUI follows soon)
- fixed issue for filters requiring two arguments that pressing RETURN if one is in the second argument input field invokes "Filter"
- added string operators: "IS EMPTY" and "IS NOT EMPTY"
- fixed issue that now one is able to look for eg \n in string fields
|
|
|
|
| |
slightly to increase the loading speed; this is up to now a compromise between speed and user information, the progress wheel will be updated every ~15%
|
|
|
|
| |
shortcuts of cmd+[ and cmd+].
|
|
|
|
| |
usage following TableContent cleanups in r1183/r1204
|
|
|
|
|
|
| |
the query console but also query favorites and history application-wide
- accessible via: [SPQueryController sharedQueryController]
|
|
|
|
| |
selectRowIndexes:byExtendingSelection:
|
|
|
|
|
| |
- Improve SQL parser streaming improvements for significant speedups and some very important bugfixes
|
|
|
|
| |
load a blob/text's field content even if we are still editing the row. This prevents the placeholder value '(not loaded)' being displayed, giving the impression that it is the field's value. Fixes issue #385.
|
|
|
|
|
|
|
| |
- Speed up table content processing a bit
- Make the table content download/processing determinate where an approximate row count is available
- Clean up table content source, assuming MCPStreamingResult will remain in use
|
|
|
|
|
| |
- rearrange invoking procedure for spf data if SP asks for passwords
• fine-tuned and fixed table history for BETWEEN operator
|
|
|
|
| |
logic firstly)
|
|
|
|
| |
• after changing the operator in TableContent set focus to first argument field
|
|
|
|
| |
Implements issue #361. Note the sizing of the new controls still needs fine tuned.
|
|
|
|
| |
• added to TableContent's method filterSettings the dict key 'filterComparisonTag' in order to be able to rely on menu item tags instead on the title strings
|
|
|
|
|
|
| |
- Use the new MCPStreamingResult in TableContent, replacing the old standard query/fetchResultAsArray.
This appears to be much faster (and lower memory use) but I've left the old fetchResultAsArray in place for the time being until we see how we feel about it.
|
|
|
|
|
| |
- catch exceptions while retrieving the original table data while/before reloading/changing the table source data
- 'image' is now set to autorelease
|
| |
|
|
|
|
|
| |
- show images directly as a NSImage in a NSImageView (this decreases the memory usage enormously)
• applied new tooltip invocation for image blob data in Content Pane and Custom Query table
|
|
|
|
|
|
|
|
|
| |
- text strings are display with line breaks and tabs
- if cell content represents image data display that image as transparent thumbnail (by using base64 encoded HTML img tag)
Notes:
- SPTooltip implementation to show an image via a NSImageView will be implemented soon (the HTML way needs too much memory due to base64 encoded string)
- to discuss: Should we add a preference setting to display these tooltips?
|
|
|
|
|
|
|
|
| |
locations, and correcting the logic for fetching the count of rows so that the query is not used where not necessary.
- Update the Table Info pane and tab with a new row count if one is known - this addresses Issue #141
- This reverts r1090, and so needs to be discussed with stuart02 - the rest of the row logic changes may have fixed the 'larger issue' described there?
|
| |
|