Skip to content

Commit 0dbadf8

Browse files
committed
In order to enable even more people to shoot themselves in the foot, this commit adds support for remote server shutdown
💣
1 parent afd6f72 commit 0dbadf8

File tree

5 files changed

+187
-32
lines changed

5 files changed

+187
-32
lines changed

Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Server Info.h

+7
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,11 @@
4545
- (SPMySQLResult *)listProcesses;
4646
- (BOOL)killQueryOnThreadID:(unsigned long)theThreadID;
4747

48+
/**
49+
* mysql_shutdown() - If the user has the permission, will shutdown the (remote) server
50+
* @return Whether the command was executed successfully
51+
* Note: this can also be NO if the user denied a reconnect attempt.
52+
*/
53+
- (BOOL)serverShutdown;
54+
4855
@end

Frameworks/SPMySQLFramework/Source/SPMySQLConnection Categories/Server Info.m

+17
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,21 @@ - (BOOL)killQueryOnThreadID:(unsigned long)theThreadID
148148
return ![self queryErrored];
149149
}
150150

151+
- (BOOL)serverShutdown
152+
{
153+
if([self _checkConnectionIfNecessary]) {
154+
[self _lockConnection];
155+
// Ensure per-thread variables are set up
156+
[self _validateThreadSetup];
157+
//only SHUTDOWN_DEFAULT is supported right now
158+
int res = mysql_shutdown(mySQLConnection, SHUTDOWN_DEFAULT);
159+
//update or clear error
160+
[self _updateLastErrorInfos];
161+
[self _unlockConnection];
162+
163+
return (res == 0);
164+
}
165+
return NO;
166+
}
167+
151168
@end

Interfaces/English.lproj/MainMenu.xib

+128-32
Original file line numberDiff line numberDiff line change
@@ -1845,6 +1845,14 @@
18451845
<reference key="NSOnImage" ref="325032718"/>
18461846
<reference key="NSMixedImage" ref="674471825"/>
18471847
</object>
1848+
<object class="NSMenuItem" id="682123491">
1849+
<reference key="NSMenu" ref="762880388"/>
1850+
<string key="NSTitle">Shutdown Server…</string>
1851+
<string key="NSKeyEquiv"/>
1852+
<int key="NSMnemonicLoc">2147483647</int>
1853+
<reference key="NSOnImage" ref="325032718"/>
1854+
<reference key="NSMixedImage" ref="674471825"/>
1855+
</object>
18481856
</array>
18491857
</object>
18501858
<object class="NSAttributedString" key="NSAttributedTitle">
@@ -3419,6 +3427,14 @@
34193427
</object>
34203428
<string key="id">mhI-Hy-VAZ</string>
34213429
</object>
3430+
<object class="IBConnectionRecord">
3431+
<object class="IBActionConnection" key="connection">
3432+
<string key="label">shutdownServer:</string>
3433+
<reference key="source" ref="1005713010"/>
3434+
<reference key="destination" ref="682123491"/>
3435+
</object>
3436+
<string key="id">S1h-UE-mTv</string>
3437+
</object>
34223438
<object class="IBConnectionRecord">
34233439
<object class="IBOutletConnection" key="connection">
34243440
<string key="label">delegate</string>
@@ -4385,6 +4401,7 @@
43854401
<reference ref="607642194"/>
43864402
<reference ref="859280893"/>
43874403
<reference ref="346403677"/>
4404+
<reference ref="682123491"/>
43884405
</array>
43894406
<reference key="parent" ref="19149132"/>
43904407
</object>
@@ -5130,6 +5147,11 @@
51305147
<reference key="object" ref="121594454"/>
51315148
<reference key="parent" ref="655178834"/>
51325149
</object>
5150+
<object class="IBObjectRecord">
5151+
<string key="id">jZI-ad-FsC</string>
5152+
<reference key="object" ref="682123491"/>
5153+
<reference key="parent" ref="762880388"/>
5154+
</object>
51335155
</array>
51345156
</object>
51355157
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -5766,6 +5788,7 @@
57665788
<string key="c7b-hr-jQv.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
57675789
<string key="elh-eq-jVU.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
57685790
<string key="fCE-bz-bNv.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
5791+
<string key="jZI-ad-FsC.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
57695792
<string key="mGA-xh-Uwq.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
57705793
<string key="nXE-rI-RyI.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
57715794
<string key="oqd-zp-I6d.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -6069,17 +6092,6 @@
60696092
<string key="candidateClassName">id</string>
60706093
</object>
60716094
</dictionary>
6072-
<object class="NSMutableDictionary" key="outlets">
6073-
<string key="NS.key.0">bundleEditorWindow</string>
6074-
<string key="NS.object.0">NSWindow</string>
6075-
</object>
6076-
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
6077-
<string key="NS.key.0">bundleEditorWindow</string>
6078-
<object class="IBToOneOutletInfo" key="NS.object.0">
6079-
<string key="name">bundleEditorWindow</string>
6080-
<string key="candidateClassName">NSWindow</string>
6081-
</object>
6082-
</object>
60836095
<object class="IBClassDescriptionSource" key="sourceIdentifier">
60846096
<string key="majorKey">IBProjectSource</string>
60856097
<string key="minorKey">../Source/SPAppController.h</string>
@@ -6741,7 +6753,6 @@
67416753
<string key="importFavorites:">id</string>
67426754
<string key="initiateConnection:">id</string>
67436755
<string key="makeSelectedFavoriteDefault:">id</string>
6744-
<string key="nodeDoubleClicked:">id</string>
67456756
<string key="removeNode:">id</string>
67466757
<string key="renameNode:">id</string>
67476758
<string key="reverseSortFavorites:">NSMenuItem</string>
@@ -6792,10 +6803,6 @@
67926803
<string key="name">makeSelectedFavoriteDefault:</string>
67936804
<string key="candidateClassName">id</string>
67946805
</object>
6795-
<object class="IBActionInfo" key="nodeDoubleClicked:">
6796-
<string key="name">nodeDoubleClicked:</string>
6797-
<string key="candidateClassName">id</string>
6798-
</object>
67996806
<object class="IBActionInfo" key="removeNode:">
68006807
<string key="name">removeNode:</string>
68016808
<string key="candidateClassName">id</string>
@@ -7111,7 +7118,6 @@
71117118
<string key="importFavorites:">id</string>
71127119
<string key="initiateConnection:">id</string>
71137120
<string key="makeSelectedFavoriteDefault:">id</string>
7114-
<string key="nodeDoubleClicked:">id</string>
71157121
<string key="removeNode:">id</string>
71167122
<string key="renameNode:">id</string>
71177123
<string key="saveFavorite:">id</string>
@@ -7160,10 +7166,6 @@
71607166
<string key="name">makeSelectedFavoriteDefault:</string>
71617167
<string key="candidateClassName">id</string>
71627168
</object>
7163-
<object class="IBActionInfo" key="nodeDoubleClicked:">
7164-
<string key="name">nodeDoubleClicked:</string>
7165-
<string key="candidateClassName">id</string>
7166-
</object>
71677169
<object class="IBActionInfo" key="removeNode:">
71687170
<string key="name">removeNode:</string>
71697171
<string key="candidateClassName">id</string>
@@ -7855,6 +7857,7 @@
78557857
<string key="showServerProcesses:">id</string>
78567858
<string key="showServerVariables:">id</string>
78577859
<string key="showUserManager:">id</string>
7860+
<string key="shutdownServer:">id</string>
78587861
<string key="toggleNavigator:">id</string>
78597862
<string key="validateSaveConnectionAccessory:">id</string>
78607863
</dictionary>
@@ -8027,6 +8030,10 @@
80278030
<string key="name">showUserManager:</string>
80288031
<string key="candidateClassName">id</string>
80298032
</object>
8033+
<object class="IBActionInfo" key="shutdownServer:">
8034+
<string key="name">shutdownServer:</string>
8035+
<string key="candidateClassName">id</string>
8036+
</object>
80308037
<object class="IBActionInfo" key="toggleNavigator:">
80318038
<string key="name">toggleNavigator:</string>
80328039
<string key="candidateClassName">id</string>
@@ -8093,6 +8100,7 @@
80938100
<string key="tableDataInstance">SPTableData</string>
80948101
<string key="tableDumpInstance">id</string>
80958102
<string key="tableInfoScrollView">NSScrollView</string>
8103+
<string key="tableInfoSplitView">SPSplitView</string>
80968104
<string key="tableInfoTable">NSTableView</string>
80978105
<string key="tableRelationsInstance">id</string>
80988106
<string key="tableSourceInstance">SPTableStructure</string>
@@ -8332,6 +8340,10 @@
83328340
<string key="name">tableInfoScrollView</string>
83338341
<string key="candidateClassName">NSScrollView</string>
83348342
</object>
8343+
<object class="IBToOneOutletInfo" key="tableInfoSplitView">
8344+
<string key="name">tableInfoSplitView</string>
8345+
<string key="candidateClassName">SPSplitView</string>
8346+
</object>
83358347
<object class="IBToOneOutletInfo" key="tableInfoTable">
83368348
<string key="name">tableInfoTable</string>
83378349
<string key="candidateClassName">NSTableView</string>
@@ -8435,6 +8447,7 @@
84358447
<string key="showServerProcesses:">id</string>
84368448
<string key="showServerVariables:">id</string>
84378449
<string key="showUserManager:">id</string>
8450+
<string key="shutdownServer:">id</string>
84388451
<string key="toggleNavigator:">id</string>
84398452
<string key="validateSaveConnectionAccessory:">id</string>
84408453
</dictionary>
@@ -8607,6 +8620,10 @@
86078620
<string key="name">showUserManager:</string>
86088621
<string key="candidateClassName">id</string>
86098622
</object>
8623+
<object class="IBActionInfo" key="shutdownServer:">
8624+
<string key="name">shutdownServer:</string>
8625+
<string key="candidateClassName">id</string>
8626+
</object>
86108627
<object class="IBActionInfo" key="toggleNavigator:">
86118628
<string key="name">toggleNavigator:</string>
86128629
<string key="candidateClassName">id</string>
@@ -8862,7 +8879,7 @@
88628879
<string key="exportCSVLinesTerminatedField">NSComboBox</string>
88638880
<string key="exportCSVNULLValuesAsTextField">NSTextField</string>
88648881
<string key="exportCustomFilenameTokenField">NSTokenField</string>
8865-
<string key="exportCustomFilenameTokensField">NSTokenField</string>
8882+
<string key="exportCustomFilenameTokenPool">NSTokenField</string>
88668883
<string key="exportCustomFilenameView">NSView</string>
88678884
<string key="exportCustomFilenameViewButton">NSButton</string>
88688885
<string key="exportCustomFilenameViewLabelButton">NSButton</string>
@@ -8962,8 +8979,8 @@
89628979
<string key="name">exportCustomFilenameTokenField</string>
89638980
<string key="candidateClassName">NSTokenField</string>
89648981
</object>
8965-
<object class="IBToOneOutletInfo" key="exportCustomFilenameTokensField">
8966-
<string key="name">exportCustomFilenameTokensField</string>
8982+
<object class="IBToOneOutletInfo" key="exportCustomFilenameTokenPool">
8983+
<string key="name">exportCustomFilenameTokenPool</string>
89678984
<string key="candidateClassName">NSTokenField</string>
89688985
</object>
89698986
<object class="IBToOneOutletInfo" key="exportCustomFilenameView">
@@ -9227,13 +9244,55 @@
92279244
<string key="minorKey">../Source/SPExportController.m</string>
92289245
</object>
92299246
</object>
9247+
<object class="IBPartialClassDescription">
9248+
<string key="className">SPExportController</string>
9249+
<dictionary class="NSMutableDictionary" key="actions">
9250+
<string key="exportCurrentSettings:">id</string>
9251+
<string key="importCurrentSettings:">id</string>
9252+
</dictionary>
9253+
<dictionary class="NSMutableDictionary" key="actionInfosByName">
9254+
<object class="IBActionInfo" key="exportCurrentSettings:">
9255+
<string key="name">exportCurrentSettings:</string>
9256+
<string key="candidateClassName">id</string>
9257+
</object>
9258+
<object class="IBActionInfo" key="importCurrentSettings:">
9259+
<string key="name">importCurrentSettings:</string>
9260+
<string key="candidateClassName">id</string>
9261+
</object>
9262+
</dictionary>
9263+
<object class="IBClassDescriptionSource" key="sourceIdentifier">
9264+
<string key="majorKey">IBProjectSource</string>
9265+
<string key="minorKey">../Source/SPExportSettingsPersistence.h</string>
9266+
</object>
9267+
</object>
9268+
<object class="IBPartialClassDescription">
9269+
<string key="className">SPExportController</string>
9270+
<dictionary class="NSMutableDictionary" key="actions">
9271+
<string key="exportCurrentSettings:">id</string>
9272+
<string key="importCurrentSettings:">id</string>
9273+
</dictionary>
9274+
<dictionary class="NSMutableDictionary" key="actionInfosByName">
9275+
<object class="IBActionInfo" key="exportCurrentSettings:">
9276+
<string key="name">exportCurrentSettings:</string>
9277+
<string key="candidateClassName">id</string>
9278+
</object>
9279+
<object class="IBActionInfo" key="importCurrentSettings:">
9280+
<string key="name">importCurrentSettings:</string>
9281+
<string key="candidateClassName">id</string>
9282+
</object>
9283+
</dictionary>
9284+
<object class="IBClassDescriptionSource" key="sourceIdentifier">
9285+
<string key="majorKey">IBProjectSource</string>
9286+
<string key="minorKey">../Source/SPExportSettingsPersistence.m</string>
9287+
</object>
9288+
</object>
92309289
<object class="IBPartialClassDescription">
92319290
<string key="className">SPExtendedTableInfo</string>
92329291
<string key="superclassName">NSObject</string>
92339292
<dictionary class="NSMutableDictionary" key="actions">
92349293
<string key="reloadTable:">id</string>
92359294
<string key="resetAutoIncrement:">id</string>
9236-
<string key="resetAutoIncrementValueWasEdited:">id</string>
9295+
<string key="tableRowAutoIncrementWasEdited:">id</string>
92379296
<string key="updateTableCollation:">id</string>
92389297
<string key="updateTableEncoding:">id</string>
92399298
<string key="updateTableType:">id</string>
@@ -9247,8 +9306,8 @@
92479306
<string key="name">resetAutoIncrement:</string>
92489307
<string key="candidateClassName">id</string>
92499308
</object>
9250-
<object class="IBActionInfo" key="resetAutoIncrementValueWasEdited:">
9251-
<string key="name">resetAutoIncrementValueWasEdited:</string>
9309+
<object class="IBActionInfo" key="tableRowAutoIncrementWasEdited:">
9310+
<string key="name">tableRowAutoIncrementWasEdited:</string>
92529311
<string key="candidateClassName">id</string>
92539312
</object>
92549313
<object class="IBActionInfo" key="updateTableCollation:">
@@ -9383,7 +9442,7 @@
93839442
<dictionary class="NSMutableDictionary" key="actions">
93849443
<string key="reloadTable:">id</string>
93859444
<string key="resetAutoIncrement:">id</string>
9386-
<string key="resetAutoIncrementValueWasEdited:">id</string>
9445+
<string key="tableRowAutoIncrementWasEdited:">id</string>
93879446
<string key="updateTableCollation:">id</string>
93889447
<string key="updateTableEncoding:">id</string>
93899448
<string key="updateTableType:">id</string>
@@ -9397,8 +9456,8 @@
93979456
<string key="name">resetAutoIncrement:</string>
93989457
<string key="candidateClassName">id</string>
93999458
</object>
9400-
<object class="IBActionInfo" key="resetAutoIncrementValueWasEdited:">
9401-
<string key="name">resetAutoIncrementValueWasEdited:</string>
9459+
<object class="IBActionInfo" key="tableRowAutoIncrementWasEdited:">
9460+
<string key="name">tableRowAutoIncrementWasEdited:</string>
94029461
<string key="candidateClassName">id</string>
94039462
</object>
94049463
<object class="IBActionInfo" key="updateTableCollation:">
@@ -10868,7 +10927,7 @@
1086810927
<string key="superclassName">NSObject</string>
1086910928
<dictionary class="NSMutableDictionary" key="outlets">
1087010929
<string key="activitiesTable">NSTableView</string>
10871-
<string key="infoTable">id</string>
10930+
<string key="infoTable">NSTableView</string>
1087210931
<string key="tableDataInstance">id</string>
1087310932
<string key="tableDocumentInstance">id</string>
1087410933
<string key="tableInfoScrollView">NSScrollView</string>
@@ -10882,7 +10941,7 @@
1088210941
</object>
1088310942
<object class="IBToOneOutletInfo" key="infoTable">
1088410943
<string key="name">infoTable</string>
10885-
<string key="candidateClassName">id</string>
10944+
<string key="candidateClassName">NSTableView</string>
1088610945
</object>
1088710946
<object class="IBToOneOutletInfo" key="tableDataInstance">
1088810947
<string key="name">tableDataInstance</string>
@@ -10978,6 +11037,8 @@
1097811037
<string key="resetAutoIncrementSheet">id</string>
1097911038
<string key="resetAutoIncrementValue">id</string>
1098011039
<string key="structureGrabber">id</string>
11040+
<string key="structureHelpPanel">NSPanel</string>
11041+
<string key="structureHelpText">NSTextView</string>
1098111042
<string key="tableDataInstance">SPTableData</string>
1098211043
<string key="tableDocumentInstance">SPDatabaseDocument</string>
1098311044
<string key="tableInfoInstance">SPTableInfo</string>
@@ -11067,6 +11128,14 @@
1106711128
<string key="name">structureGrabber</string>
1106811129
<string key="candidateClassName">id</string>
1106911130
</object>
11131+
<object class="IBToOneOutletInfo" key="structureHelpPanel">
11132+
<string key="name">structureHelpPanel</string>
11133+
<string key="candidateClassName">NSPanel</string>
11134+
</object>
11135+
<object class="IBToOneOutletInfo" key="structureHelpText">
11136+
<string key="name">structureHelpText</string>
11137+
<string key="candidateClassName">NSTextView</string>
11138+
</object>
1107011139
<object class="IBToOneOutletInfo" key="tableDataInstance">
1107111140
<string key="name">tableDataInstance</string>
1107211141
<string key="candidateClassName">SPTableData</string>
@@ -12323,6 +12392,33 @@
1232312392
<string key="minorKey">Quartz.framework/Frameworks/PDFKit.framework/Headers/PDFView.h</string>
1232412393
</object>
1232512394
</object>
12395+
<object class="IBPartialClassDescription">
12396+
<string key="className">PSMTabBarControl</string>
12397+
<string key="superclassName">NSControl</string>
12398+
<dictionary class="NSMutableDictionary" key="outlets">
12399+
<string key="delegate">id</string>
12400+
<string key="partnerView">id</string>
12401+
<string key="tabView">NSTabView</string>
12402+
</dictionary>
12403+
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
12404+
<object class="IBToOneOutletInfo" key="delegate">
12405+
<string key="name">delegate</string>
12406+
<string key="candidateClassName">id</string>
12407+
</object>
12408+
<object class="IBToOneOutletInfo" key="partnerView">
12409+
<string key="name">partnerView</string>
12410+
<string key="candidateClassName">id</string>
12411+
</object>
12412+
<object class="IBToOneOutletInfo" key="tabView">
12413+
<string key="name">tabView</string>
12414+
<string key="candidateClassName">NSTabView</string>
12415+
</object>
12416+
</dictionary>
12417+
<object class="IBClassDescriptionSource" key="sourceIdentifier">
12418+
<string key="majorKey">IBFrameworkSource</string>
12419+
<string key="minorKey">PSMTabBar.framework/Headers/PSMTabBarControl.h</string>
12420+
</object>
12421+
</object>
1232612422
<object class="IBPartialClassDescription">
1232712423
<string key="className">QCView</string>
1232812424
<string key="superclassName">NSView</string>

Source/SPDatabaseDocument.h

+1
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@
359359
- (IBAction) makeTableListFilterHaveFocus:(id)sender;
360360
- (IBAction)showServerVariables:(id)sender;
361361
- (IBAction)showServerProcesses:(id)sender;
362+
- (IBAction)shutdownServer:(id)sender;
362363
- (IBAction)openCurrentConnectionInNewWindow:(id)sender;
363364
- (IBAction)showGotoDatabase:(id)sender;
364365
#endif

0 commit comments

Comments
 (0)