Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Performance Studio

## Fork Notice

This repository is a personal fork of Erik Darling's PerformanceStudio project, maintained to support additional workflow and UX changes for day-to-day tuning work.

Current fork-specific changes include:
- query file save and save-as actions in the desktop app
- top-level tab drag/drop behavior and related UI improvements
- iterative app-level settings and session handling updates tied to those features

Upstream source of truth: [erikdarlingdata/PerformanceStudio](https://github.com/erikdarlingdata/PerformanceStudio)

If you do not specifically need the fork changes above, prefer the upstream repository for official releases and updates.

---

A cross-platform SQL Server execution plan analyzer with built-in MCP server for AI-assisted analysis. Parses `.sqlplan` XML, identifies performance problems, suggests missing indexes, and provides actionable warnings — from the command line or a desktop GUI.

Built for developers and DBAs who want fast, automated plan analysis without clicking through SSMS.
Expand Down
10 changes: 9 additions & 1 deletion src/PlanViewer.App/Controls/QuerySessionControl.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,22 @@ public partial class QuerySessionControl : UserControl
private CancellationTokenSource? _statusClearCts;
private CompletionWindow? _completionWindow;

public string QueryText
{
get => QueryEditor.Text ?? "";
set => QueryEditor.Text = value ?? "";
}

public string? SourceFilePath { get; set; }

public QuerySessionControl(ICredentialService credentialService, ConnectionStore connectionStore)
{
_credentialService = credentialService;
_connectionStore = connectionStore;
InitializeComponent();

// Initialize editor with empty text so the document is ready
QueryEditor.Text = "";
QueryText = "";
ZoomBox.SelectedIndex = 2; // 100%

SetupSyntaxHighlighting();
Expand Down
6 changes: 5 additions & 1 deletion src/PlanViewer.App/MainWindow.axaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@
<MenuItem Header="_File">
<MenuItem Header="New _Query" Click="NewQuery_Click"
InputGesture="Ctrl+N"/>
<MenuItem Header="_Open .sqlplan..." Click="OpenFile_Click"
<MenuItem Header="_Open File..." Click="OpenFile_Click"
InputGesture="Ctrl+O"/>
<MenuItem x:Name="SaveQueryMenuItem" Header="_Save Query" Click="SaveQuery_Click"
InputGesture="Ctrl+S" IsEnabled="False"/>
<MenuItem x:Name="SaveAsQueryMenuItem" Header="Save Query _As..." Click="SaveAsQuery_Click"
InputGesture="Ctrl+Shift+S" IsEnabled="False"/>
<MenuItem Header="_Paste Plan XML" Click="PasteXml_Click"
InputGesture="Ctrl+V"/>
<Separator/>
Expand Down
Loading
Loading