124 Commits

Author SHA1 Message Date
aad99190ae Table editor: Apply default length/set for new columns as long as user didn't touch it. Fixes issue #2084. 2010-07-14 10:52:34 +00:00
6b03976eb7 Attempt to fix some memory leaks in TMySQLQuery, when it gets destroyed. Should already be done by the compiler but who knows, probably this fixes issue #2063. 2010-07-13 17:59:00 +00:00
e7bfca41b4 Add LIMIT 1 clause to grid UPDATE queries, to make these safer on tables without sufficient unique key. Fixes issue #2079. 2010-07-11 18:56:19 +00:00
7cd1c7b0ab Add support for ZEROFILL flag in table editor. Introduces a new checkbox column in the columns list. Fixes issue #570. 2010-07-04 13:35:54 +00:00
33bf95ba12 Foreign key constraint symbol names must be unique in a database. To avoid violation errors the "Copy table" dialog should just leave the CONSTRAINT clause out from the CREATE TABLE code. In that case MySQL auto creates a valid name on demand. See http://www.heidisql.com/forum.php?t=6086 2010-06-30 23:37:23 +00:00
346e4698eb Be sure later calls to SetRecNo are executed after discarding a new grid row. Fixes issue #2031. 2010-06-22 05:39:45 +00:00
3ddf240983 Trim db names to ignore such minor typos. Fixes issue #2036. 2010-06-21 10:00:15 +00:00
35ea591027 Do not overtake empty strings in semicolon separated list of databases. Fixes issue #2032. 2010-06-21 06:03:13 +00:00
b215089ada Make data in VIEWs editable again by fetching table name and column names in a slightly different way. Fixes issue #1999. 2010-06-20 16:45:17 +00:00
edb9ce1487 Split identifiers with dot only in explicit cases, so column names containing a dot can be loaded and created. Fixes issue #2026. 2010-06-18 16:52:41 +00:00
e16d1bcc59 Fix wrong "DROP [index name]" clause when turning a normal key into a primary key. Fixes issue #2011. 2010-06-16 18:55:33 +00:00
e359ad2f98 Reset FRecNo after executing a new query, otherwise SetRecNo does nothing if FRecNo was already 0. Fixes issue #2009. 2010-06-14 21:50:27 +00:00
c0da6e5a21 Refactor "Copy table" dialog:
* Replace checkboxes, radio buttons and checklistbox by a VirtualTree using checkbox support
* Support selecting/deselecting single indexes
* Support foreign keys
* Place a SynMemo at the bottom in which the user can type an optional WHERE clause to filter incoming data. Fixes issue #2000.
* Move code for SQL generation into TTableColumn etc.
2010-06-14 00:21:33 +00:00
5bc81b96d2 Make grid scrolling incredibly much faster, by exiting early in SetRecNo if current row is already the right one. See http://www.heidisql.com/forum.php?t=5890 2010-06-11 21:04:52 +00:00
24295f111e Immediately prepare editing when data grid fetches rows, as that implicitly fixes BLOBs detection and enables "Image preview" action. Fixes issue #1948. 2010-06-11 19:52:42 +00:00
d81cc6cd7b Treat BLOBs like required in grid INSERTs and UPDATEs. Bug report: http://www.heidisql.com/forum.php?t=5883 2010-06-04 18:19:30 +00:00
f01823fb56 Fix AV when checking if "Image view" shall be enabled or disabled. Fixes issue #1974. 2010-05-31 22:18:05 +00:00
7c83d1a01e mysql_data_seek() is required for cumulated results (datagrid) on the very first row of an added result, to avoid AVs when that result has its cursor at the end or somewhere in the middle. Fixes an AV when exporting grid data. 2010-05-29 00:21:38 +00:00
5351f8df23 New feature: When mouse hovers over status bar panel holding the server version, display various connection related details in a hint. 2010-05-28 19:41:17 +00:00
9984bf0236 Issue #1135: Implement tabs for multiple batch results in a query tab. Does not yet show multi results of stored procedures. Maximum number of tabs is customizable in Preferences > Data. 2010-05-26 23:11:08 +00:00
53f3010689 Make QuotedDbAndTableName more universal, and let DatabaseName return current db on old servers early. 2010-05-22 07:03:03 +00:00
a353aa3008 Introduce helper function TMySQLConnection.DecodeAPIString() which auto decodes incoming data as required by charset. Also, call this on Field.name when fetching column names in TMySQLQuery.Execute - fixes issue #1943. 2010-05-15 17:11:53 +00:00
1ab975b0d5 Move responsibility for well formed floats and integers from TMySQLQuery.SetCol() to caller, so new values don't get touched at all, and to avoid double-unformatted numbers in "Duplicate row" feature. Fixes issue #1936. 2010-05-12 18:33:21 +00:00
d3711b5d62 Work around empty members of PMYSQL_FIELD on servers below 4.1 - org_name and db are empty on such servers, but Heidi needs both to compose safe and valid INSERT/UPDATE/DELETE queries. In order to at least allow grid editing, do some unsafe stuff for old servers: Never take db name into posted queries, neither use original fieldnames (instead, use the normal name). Should be ok as this is just to satisfy 2% of all Heidi users. Fixes issue #1934.
See also: http://dev.mysql.com/doc/refman/4.1/en/c-api-datatypes.html
2010-05-11 22:04:24 +00:00
133de5850a Remove unused member 2010-05-10 23:35:09 +00:00
1368508685 Do not display grid cells as modified if new value is effectively the same as the old one. Especially minimizes INSERTs for "Duplicate row" feature. 2010-05-10 23:34:36 +00:00
6355102eb0 In editing mode, when cursor points to a virtual edited row, we need to call mysql_data_seek() in SetRecNo, even if FRecNo points the previous row. Do that by checking for nil. Fixes issue #1931. Fixes issue #1919. 2010-05-10 23:26:47 +00:00
1319abe2c0 Number magic:
* Rewrite UnformatNumber() so it throws away characters other than digits, thousand or decimal separator. This is critical for adding WHERE clauses, where it was previously possible to update a whole table column accidentally: "UPDATE mytable SET numcol=123# WHERE id=567"
* Do not fetch last insert id when user passed a number to it. In that case LAST_INSERT_ID() would return 0
2010-05-10 22:04:21 +00:00
1838a0eaa7 Use original name of a foreign key in DROP FOREIGN KEY query when renaming. Fixes issue #1930. 2010-05-10 18:51:10 +00:00
e258f7ccec mysql_free_result() frees memory but does not set pointer to nil. Do that by hand, so later checks for nil don't run into AVs. Probably fixes issue #1901. 2010-05-08 17:49:47 +00:00
ae4b7faacd Binary column type detection is still a mess. But now TMySQLQuery parses its column names from a SHOW CREATE TABLE grid editing can benefit from the parsed stuff. Effect: data type of LEFT(bincol, 256) in data grid is re-detected when going into editing mode. Still displays these as green text before editing is tried, which could probably be solved by immediately call PrepareEditing for DataGrid result. 2010-05-08 15:53:37 +00:00
634f5cb951 Ensure column correct lengths are set in SetRecNo. Fixes issue #1921. 2010-05-08 13:50:32 +00:00
db5c5a1dc3 Ensure FCurrentResults is set, also in the special case when result has 0 rows, to avoid AVs in DatabaseName() and TableName(). Fixes issue #1917. 2010-05-08 10:37:34 +00:00
ede2fab6f1 SaveModifications() should process all virtual rows, but ignore just inserted ones, so we can call InsertRow and then SaveModifications for yet modified rows. Fixes issue #1918. 2010-05-08 08:14:35 +00:00
646006715b Avoid access violation in EnsureFullRow when row cannot be found. Just return false in that case and block editing. Fixes issue #1910. 2010-05-07 15:43:08 +00:00
7ce555ff1a Straighten sort logic in lists and db tree:
* Let both header clicks and TDBObjectComparer consistently use the same compare callback function CompareAnyNode()
* When refreshing a list, VT.SortTree sorts nodes if toAutoSort is set. Then, selected nodes are mostly different ones than before refreshing. Also, what GetVTCaptions did was only looking after the first column caption which can exist besides duplicates. So, for now, do not restore selected nodes after refreshing a list, which is now more standard behavior.
Fixes issue #1911.
2010-05-06 22:46:35 +00:00
dc62492a34 Avoid exceeding range of FColumns within ColAttributes(). Fixes issue #1908. 2010-05-06 18:17:41 +00:00
05b07eb8f2 Implement editing capabilities into TMySQLQuery, and make query results editable by using all the same events as in DataGrid. Most probably some bugs to fix now.
* Fixes issue #723
* Fixes issue #873
2010-05-05 21:39:15 +00:00
b3b1710c35 Introduce EDatabaseError exception class, so we're able to handle only those and let others raise the exception up to MadExcept. Helps finding non-database related AVs as users are able to get the callstack now. Similar to r3292 but more consistent all over the code now. 2010-04-24 13:56:57 +00:00
49dce8e08b Overcome MySQL bug #41907 - SHOW EVENTS shows events in other schema. 2010-04-22 16:24:28 +00:00
97f01a175b Move database filter again from mainform to session manager, so people without privilege to run SHOW DATABASE are not stuck. Fixes issue #1485. Also, allow to see available databases when user does a dropdown. Also, simplify logic for refreshing database list in mainform. 2010-04-22 15:16:27 +00:00
71ae99d225 Do not trigger OnDBObjectsCleared in TMySQLConnection.Destroy, to avoid loop backs to connection instance which triggers AVs. Fixes issue #1878. 2010-04-19 22:20:04 +00:00
43e35c8192 Throw successive result sets from stored procedures away, until we have real support for multi results. Otherwise mysql_ping() crashes on the next query. Fixes issue #1850. 2010-04-12 21:03:13 +00:00
aef5f3b147 Modify Mainform.SelectedTable so that it always returns a new TDBObject, instead of passing an item of the connection's internal cache. Makes sure that the object editors (table editor e.g.) still has a valid object reference. See also http://www.heidisql.com/forum.php?t=5511#p5514 2010-04-11 13:36:42 +00:00
f451d061eb Introduce 2 new columns in Host > Databases: "Last modification" and "Events". Plus:
* enhance db object lists for storing additional details like last modification and data size
* remove home brown Min() and Max() functions and use those from Math unit which are not restricted to Integers.
2010-04-11 12:03:07 +00:00
728d38b14b Issue #401: Close plink.exe also on connection errors. 2010-04-10 09:54:18 +00:00
5f9129bef2 Implement event editor for MySQL 5.1+ servers. Also, simplify some code around database objects and their editors. Fixes issue #1527 2010-04-08 23:16:40 +00:00
ea8574bc1a Fix some AVs around ListTables by reintroducing recently deleted connection event OnDBObjectsCleared. Required in cases where cache is cleared or refreshed (!) elsewhere and ListTables get repainted later. 2010-04-04 23:30:37 +00:00
f014190c9c Do not clear cache with db objects in a reconnect situation. Heals several AVs where we rely on some valid TDBObject, also when server stays unreachable. Fixes issue #1819. Also, this makes it superfluous to have an event fired after clearing the cache. 2010-04-03 21:30:11 +00:00
3c9dcfaaa0 Last tweaks for SSH tunnel, issue #401:
* Only pass SSH port if not empty
* Put right default file extension for selecting a PuTTY private key file (*.ppk)
* Add text hints on more input fields
* Indicate modified session also if SSH host, port or key file was changed.
2010-04-02 07:33:36 +00:00