Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
af30504
Localizations
lewis-sanchez Mar 18, 2026
2e4a49f
Generated loc changes
lewis-sanchez Mar 18, 2026
bfced53
Add telemetry actions
lewis-sanchez Mar 18, 2026
c741ea6
Make schema designer label adjustable
lewis-sanchez Mar 18, 2026
dadc64b
Add custom query support to Table Explorer
lewis-sanchez Mar 18, 2026
099c453
Switching between editor modes in Edit Data persists content
lewis-sanchez Mar 18, 2026
342430b
Add unit tests
lewis-sanchez Mar 18, 2026
bcad015
Clean up
lewis-sanchez Mar 19, 2026
005785c
More clean up
lewis-sanchez Mar 19, 2026
3156671
Generated changes
lewis-sanchez Mar 19, 2026
14f72e9
Code review changes
lewis-sanchez Mar 19, 2026
f9cd344
Clean up
lewis-sanchez Mar 19, 2026
a369e2d
Include error message
lewis-sanchez Mar 19, 2026
61dd079
Code review changes
lewis-sanchez Mar 19, 2026
90d4a4f
Adjust the split button
lewis-sanchez Mar 19, 2026
55af0e8
More review changes
lewis-sanchez Mar 19, 2026
abfba28
Code review changes
lewis-sanchez Mar 20, 2026
adfa2b3
Adjust Show SQL Pane button text based on open state
lewis-sanchez Mar 20, 2026
a7753bc
Generated loc changes
lewis-sanchez Mar 20, 2026
5ee0145
Code review changes
lewis-sanchez Mar 20, 2026
a0b6df3
Fix syntax error
lewis-sanchez Mar 20, 2026
c89a390
Code review changes
lewis-sanchez Mar 20, 2026
7742d8a
Clear cell highlights on query change
lewis-sanchez Mar 20, 2026
7bf70b9
Merge branch 'main' into lewissanchez/editData/load-data-with-custom-…
lewis-sanchez Apr 8, 2026
81143ed
IntelliSense works in FROM clause
lewis-sanchez Mar 26, 2026
8d41a3c
Improve IntelliSense synchronization in Table Explorer
lewis-sanchez Mar 26, 2026
dd87e00
Use didChange for document synchronization in Table Explorer
lewis-sanchez Mar 26, 2026
7ce416a
Correctly update edit data result grid for custom queries
lewis-sanchez Apr 4, 2026
8188188
Revert "Correctly update edit data result grid for custom queries"
lewis-sanchez Apr 4, 2026
7c2793c
Correctly update slickgrid react dataset
lewis-sanchez Mar 20, 2026
01c4716
Add cancel query op to table explorer
lewis-sanchez Apr 8, 2026
f8eef84
Stop loading indicator from hiding query editor
lewis-sanchez Apr 8, 2026
489d21d
Rerunning a canceled query keeps custom query in editor
lewis-sanchez Apr 8, 2026
1049527
Add support for copy, cut, and paste in table explorer editor
lewis-sanchez Apr 8, 2026
e65798b
Fix typescript errors
lewis-sanchez Apr 9, 2026
55215af
Embedded editor supports tabs
lewis-sanchez Apr 9, 2026
db00311
Tab key indents and accepts intellisense suggestions
lewis-sanchez Apr 9, 2026
aa8f991
Update STS version to support query cancellation
lewis-sanchez Apr 10, 2026
ee9082f
Merge branch 'main' into lewissanchez/editData/load-data-with-custom-…
lewis-sanchez Apr 10, 2026
84f24ae
Code review changes
lewis-sanchez Apr 10, 2026
88311b0
Query editor has focus on table query editor open
lewis-sanchez Apr 10, 2026
89a97c3
Generated select is formatted with column per line
lewis-sanchez Apr 10, 2026
b2d462b
Register SQL document formatting provider
lewis-sanchez Apr 10, 2026
24943ac
Sync top clause with total rows to fetch
lewis-sanchez Apr 10, 2026
f0dd75e
Fetch rows button reruns query
lewis-sanchez Apr 10, 2026
6be2a6b
Show error message with dup column names and mult table queries
lewis-sanchez Apr 10, 2026
d1af8b3
Show error diagnostics in table explorer editor
lewis-sanchez Apr 10, 2026
53c4d0b
Fix paste functionality in table explorer editor
lewis-sanchez Apr 10, 2026
9e3133f
Merge branch 'lewissanchez/editData/further-custom-query-enhancements…
lewis-sanchez Apr 10, 2026
5399382
Merge branch 'main' into lewissanchez/editData/load-data-with-custom-…
lewis-sanchez Apr 10, 2026
9831600
Code review changes
lewis-sanchez Apr 10, 2026
d1a7ae2
Add Go to Definition, Peek Definition, Hover, and Signature Help
lewis-sanchez Apr 13, 2026
9782a61
Merge branch 'main' into lewissanchez/editData/enhancements
lewis-sanchez Apr 27, 2026
672180c
Generated loc changes
lewis-sanchez Apr 27, 2026
ca3ab66
Make "table query" readonly
lewis-sanchez Apr 27, 2026
9bf5526
Enhance Table Explorer with export, column visibility, and multi-row …
lewis-sanchez Apr 27, 2026
3820eec
Generated loc changes
lewis-sanchez Apr 27, 2026
acd9d7c
Add filtering support to Table Explorer
lewis-sanchez Apr 27, 2026
20f2c3c
Persist filter state across toggles and show column type name
lewis-sanchez Apr 27, 2026
5fd6273
Enhance Table Explorer sorting behavior and checkbox styling
lewis-sanchez Apr 27, 2026
38d9996
Change label to "Show SQL"
lewis-sanchez Apr 28, 2026
8aab6ab
Generated loc changes
lewis-sanchez Apr 28, 2026
89005a4
Adjust labels
lewis-sanchez Apr 28, 2026
45c66a3
Generated loc changes
lewis-sanchez Apr 28, 2026
d899c95
Refine row insertion in Edit Data grid
lewis-sanchez Apr 28, 2026
ecad265
Implement read-only mode for Schema Designer table diagrams
lewis-sanchez Apr 28, 2026
20b9e70
Generated loc changes
lewis-sanchez Apr 28, 2026
2745a70
Fix invalid option error
lewis-sanchez Apr 28, 2026
5e0bcfb
Clean up
lewis-sanchez Apr 30, 2026
94c7ee8
More code clean up
lewis-sanchez May 1, 2026
fcef025
Fix CSS styles for checkboxes
lewis-sanchez May 1, 2026
71e40f9
More code clean up
lewis-sanchez May 1, 2026
346e031
Remove unused method
lewis-sanchez May 1, 2026
f59bd09
Code review changes and clean up
lewis-sanchez May 1, 2026
2e152cc
Fix tests
lewis-sanchez May 1, 2026
b89a336
Clean up query logic for SQL pane
lewis-sanchez May 1, 2026
bdcf862
Clean up
lewis-sanchez May 1, 2026
0f0dcba
Merge branch 'main' into lewissanchez/editData/filteringEnhancement
lewis-sanchez May 1, 2026
763b4cd
Fix sort icon in Edit Data grid
lewis-sanchez May 1, 2026
00b3e05
Adjust log levels
lewis-sanchez May 2, 2026
d432dc6
Clean up
lewis-sanchez May 2, 2026
9c94e9a
Fix comments
lewis-sanchez May 2, 2026
d0db891
More clean up
lewis-sanchez May 2, 2026
99ce169
Add undo delete button column to edit data grid.
lewis-sanchez May 5, 2026
752a0a3
Add missing open in editor and copy buttons
lewis-sanchez May 5, 2026
32f3517
Code review changes
lewis-sanchez May 5, 2026
52740a0
Generated locs
lewis-sanchez May 5, 2026
a3fa988
Correct sort indicator direction in Table Explorer grid
lewis-sanchez May 5, 2026
372069a
Implement grid sorting for Table Explorer
lewis-sanchez May 5, 2026
e5f1dbf
Simplify TableDataGrid column visibility management
lewis-sanchez May 5, 2026
744408e
Code review changes
lewis-sanchez May 7, 2026
f3ea34f
Add support for OR conditions
lewis-sanchez May 7, 2026
aedfb34
Generated loc changes
lewis-sanchez May 7, 2026
a3fc7b8
Persist filter component state until explicitly cleared
lewis-sanchez May 7, 2026
f92b64b
Fix build error
lewis-sanchez May 7, 2026
79c6c0e
Clean up CSS
lewis-sanchez May 7, 2026
08cac27
Code review changes
lewis-sanchez May 7, 2026
acdc8bc
Merge branch 'main' into lewissanchez/editData/filteringEnhancement
lewis-sanchez May 7, 2026
bacdf97
Clean up
lewis-sanchez May 7, 2026
8b81e5e
Update rows to fetch onBlur
lewis-sanchez May 7, 2026
682bffb
Code review changes
lewis-sanchez May 7, 2026
a85feb0
Improve filter bar component enablement
lewis-sanchez May 7, 2026
25e9a84
Code review changes
lewis-sanchez May 8, 2026
7340cdb
Generated loc changes
lewis-sanchez May 8, 2026
0f503ab
Bump slickgrid-react to 10.7.0
lewis-sanchez May 12, 2026
5e72f39
Update filters button tooltip for clarity
lewis-sanchez May 12, 2026
6e543c9
Generated loc changes
lewis-sanchez May 12, 2026
db3f81f
Code review changes
lewis-sanchez May 12, 2026
29d9045
Code review changes
lewis-sanchez May 13, 2026
4b0b6e1
Generated loc changes
lewis-sanchez May 13, 2026
d04f845
Code review changes
lewis-sanchez May 13, 2026
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
43 changes: 38 additions & 5 deletions extensions/mssql/l10n/bundle.l10n.json
Original file line number Diff line number Diff line change
Expand Up @@ -1259,8 +1259,6 @@
"Learn More": "Learn More",
"Save Changes": "Save Changes",
"Add Row": "Add Row",
"Show Script": "Show Script",
"Hide Script": "Hide Script",
"Open in SQL Editor": "Open in SQL Editor",
"Copy Script": "Copy Script",
"Copy Script to Clipboard": "Copy Script to Clipboard",
Expand All @@ -1272,7 +1270,6 @@
"Revert Row": "Revert Row",
"Total rows to fetch:": "Total rows to fetch:",
"Rows per page": "Rows per page",
"Fetch rows": "Fetch rows",
"First Page": "First Page",
"Previous Page": "Previous Page",
"Next Page": "Next Page",
Expand All @@ -1283,6 +1280,36 @@
"Close Script Pane": "Close Script Pane",
"Modify Table": "Modify Table",
"View Table Diagram": "View Table Diagram",
"Show SQL Pane": "Show SQL Pane",
"Hide SQL Pane": "Hide SQL Pane",
"Changes": "Changes",
"SQL": "SQL",
"Delete 1 row": "Delete 1 row",
"Delete {0} rows": "Delete {0} rows",
"Show SQL": "Show SQL",
"Open the generated SELECT statement in a new editor": "Open the generated SELECT statement in a new editor",
"Filters": "Filters",
"Add filters to modify the SQL query": "Add filters to modify the SQL query",
"WHERE": "WHERE",
"and": "and",
"or": "or",
"Conjunction": "Conjunction",
"Logical operator": "Logical operator",
"Filter value": "Filter value",
"Add filter": "Add filter",
"Clear filters": "Clear filters",
"Remove filter": "Remove filter",
"value": "value",
"equals": "equals",
"not equals": "not equals",
"contains": "contains",
"does not contain": "does not contain",
"starts with": "starts with",
"ends with": "ends with",
"greater than": "greater than",
"less than": "less than",
"is null": "is null",
"is not null": "is not null",
"Search Database Objects": "Search Database Objects",
"Loading database objects": "Loading database objects",
"Connecting to {0}.../{0} is the server name": {
Expand Down Expand Up @@ -1353,7 +1380,6 @@
"of": "of",
"Page": "Page",
"Refresh dataset": "Refresh dataset",
"Remove filter": "Remove filter",
"Remove sort": "Remove sort",
"Select all": "Select all",
"Sort ascending": "Sort ascending",
Expand Down Expand Up @@ -1603,7 +1629,6 @@
},
"YYYY-MM-DD HH:mm:ss": "YYYY-MM-DD HH:mm:ss",
"Use format: YYYY-MM-DD HH:mm:ss[.SSS]": "Use format: YYYY-MM-DD HH:mm:ss[.SSS]",
"Filter value": "Filter value",
"Filter operator": "Filter operator",
"Value is required": "Value is required",
"Must be a valid number": "Must be a valid number",
Expand Down Expand Up @@ -2750,6 +2775,7 @@
"comment": ["{0} is the error message from the connection attempt"]
},
"Loading Schema Designer Model...": "Loading Schema Designer Model...",
"Table Diagram": "Table Diagram",
"Schema Designer Model is ready. Changes can now be published.": "Schema Designer Model is ready. Changes can now be published.",
"Schema Designer": "Schema Designer",
"Opening Publish Script. This may take a while...": "Opening Publish Script. This may take a while...",
Expand Down Expand Up @@ -3289,6 +3315,13 @@
"message": "Failed to open Schema Designer: {0}",
"comment": ["{0} is the error message"]
},
"Failed to run table query: {0}/{0} is the error message": {
"message": "Failed to run table query: {0}",
"comment": ["{0} is the error message"]
},
"Failed to run table query.": "Failed to run table query.",
"Running a custom query will discard all pending changes. Do you want to continue?": "Running a custom query will discard all pending changes. Do you want to continue?",
"Continue": "Continue",
"Locate an Azure Data Studio settings.json file to import": "Locate an Azure Data Studio settings.json file to import",
"Ready for import": "Ready for import",
"Needs attention": "Needs attention",
Expand Down
74 changes: 37 additions & 37 deletions extensions/mssql/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion extensions/mssql/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
"sinon": "^21.0.3",
"sinon-chai": "^4.0.1",
"slickgrid": "github:Microsoft/SlickGrid.ADS#v2.3.51",
"slickgrid-react": "10.5.1",
"slickgrid-react": "10.7.0",
"source-map-support": "^0.5.21",
"ts-node": "^10.9.2",
"typescript": "^5.8.3",
Expand Down
16 changes: 16 additions & 0 deletions extensions/mssql/src/constants/locConstants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1989,6 +1989,7 @@ export class SchemaCompare {
export class SchemaDesigner {
public static LoadingSchemaDesginerModel = l10n.t("Loading Schema Designer Model...");
public static PanelTitle = l10n.t("Visualize and Design Schema");
public static ReadOnlyPanelTitle = l10n.t("Table Diagram");
public static SchemaReady = l10n.t(
"Schema Designer Model is ready. Changes can now be published.",
);
Expand Down Expand Up @@ -3090,6 +3091,21 @@ export class TableExplorer {
args: [errorMessage],
comment: ["{0} is the error message"],
});

public static failedToRunTableQuery = (errorMessage: string) =>
l10n.t({
message: "Failed to run table query: {0}",
args: [errorMessage],
comment: ["{0} is the error message"],
});

public static failedToRunTableQueryUnknown = l10n.t("Failed to run table query.");

public static pendingChangesWillBeLost = l10n.t(
"Running a custom query will discard all pending changes. Do you want to continue?",
);

public static Continue = l10n.t("Continue");
}

export class AzureDataStudioMigration {
Expand Down
2 changes: 2 additions & 0 deletions extensions/mssql/src/controllers/mainController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1831,6 +1831,8 @@ export default class MainController implements vscode.Disposable {
this.schemaDesignerService,
databaseName,
node,
undefined,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you add a comment with the parameter's name so we know what's getting set as undefined?

true, // isReadOnly: table-diagram view from Table Explorer
);

schemaDesigner.setInitialFilterTables([filterTable]);
Expand Down
13 changes: 8 additions & 5 deletions extensions/mssql/src/controllers/webviewPanelController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export class WebviewPanelController<State, Reducers, Result = void> extends Webv
State,
Reducers
> {
private _panel: vscode.WebviewPanel;
private _panel!: vscode.WebviewPanel;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What prompted the changes in this file?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It was these typescript errors:

Image

Copy link
Copy Markdown
Contributor Author

@lewis-sanchez lewis-sanchez May 13, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you prefer that I undo the changes here or to just keep them? They don't alter any state, just satisfy typescript.

public readonly dialogResult: Deferred<Result | undefined> = new Deferred<Result | undefined>();

/**
Expand Down Expand Up @@ -107,10 +107,13 @@ export class WebviewPanelController<State, Reducers, Result = void> extends Webv
this._panel.reveal(viewColumn, true);
}

protected async showRestorePrompt(): Promise<{
title: string;
run: () => Promise<void>;
}> {
protected async showRestorePrompt(): Promise<
| {
title: string;
run: () => Promise<void>;
}
| undefined
> {
return await vscode.window.showInformationMessage(
locConstants.Webview.webviewRestorePrompt(this._options.title),
{
Expand Down
11 changes: 10 additions & 1 deletion extensions/mssql/src/models/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,16 @@ export function azureAuthTypeToString(value: AzureAuthType): string {
}

export function escapeClosingBrackets(str: string): string {
return str.replace("]", "]]");
return str.replace(/\]/g, "]]");
}

/**
* Escapes a SQL identifier by wrapping it in square brackets and escaping any
* closing brackets within the name.
* Example: `my]table` becomes `[my]]table]`
*/
export function bracketEscapeSqlIdentifier(name: string): string {
return `[${escapeClosingBrackets(name)}]`;
}
Comment on lines 112 to 123
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe merge these two with a flag for whether to include surrounding brackets?


/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ export class SchemaDesignerWebviewController extends WebviewPanelController<
private schemaDesignerCache: Map<string, SchemaDesigner.SchemaDesignerCacheItem>,
private treeNode?: TreeNodeInfo,
private connectionUri?: string,
isReadOnly: boolean = false,
) {
super(
context,
Expand All @@ -111,9 +112,14 @@ export class SchemaDesignerWebviewController extends WebviewPanelController<
isCopilotChatInstalled: isCopilotChatInstalled(),
copilotChatDiscoveryDismissed: getCopilotChatDiscoveryDismissedState(context),
activeView: SchemaDesigner.SchemaDesignerActiveView.SchemaDesigner,
isReadOnly,
},
{
title: `${LocConstants.SchemaDesigner.PanelTitle} - ${databaseName}`,
// Drop the "(Preview)" suffix when launched read-only from the
// Table Explorer's table-diagram entry point.
title: isReadOnly
? `${LocConstants.SchemaDesigner.ReadOnlyPanelTitle} - ${databaseName}`
: `${LocConstants.SchemaDesigner.PanelTitle} - ${databaseName}`,
Comment on lines +118 to +122
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's okay without stripping the "preview" suffix, since that'll go away soon anyway. Plus, even in "read-only" mode, I can still access the DAB functionality that's the bulk of the preview functionality.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment is outdated. The latest changes in main removed "(Preview)".

viewColumn: vscode.ViewColumn.One,
iconPath: {
light: vscode.Uri.joinPath(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ export class SchemaDesignerWebviewManager {
databaseName: string,
treeNode?: TreeNodeInfo,
connectionUri?: string,
isReadOnly: boolean = false,
): Promise<SchemaDesignerWebviewController> {
let connectionString: string | undefined;
let azureAccountToken: string | undefined;
Expand Down Expand Up @@ -117,7 +118,10 @@ export class SchemaDesignerWebviewManager {
azureAccountToken = connInfo.credentials.azureAccountToken;
}

const key = `${connectionString}-${databaseName}`;
// Include the mode in the cache key so that opening a read-only and an
// editable view for the same database produces two separate panels rather
// than reusing one with the wrong toolbar and state.
const key = `${connectionString}-${databaseName}-${isReadOnly ? "ro" : "rw"}`;
if (!this.schemaDesigners.has(key) || this.schemaDesigners.get(key)?.isDisposed) {
const schemaDesigner = new SchemaDesignerWebviewController(
context,
Expand All @@ -130,6 +134,7 @@ export class SchemaDesignerWebviewManager {
this.schemaDesignerCache,
treeNode,
connectionUri,
isReadOnly,
);
const viewStateDisposable = schemaDesigner.panel.onDidChangeViewState((event) => {
if (event.webviewPanel.visible) {
Expand Down Expand Up @@ -172,6 +177,7 @@ export class SchemaDesignerWebviewManager {
databaseName,
treeNode,
connectionUri,
isReadOnly,
);
}
}
Expand Down
Loading
Loading