diff --git a/apps/desktop/src/lib/treeNodeClick.ts b/apps/desktop/src/lib/treeNodeClick.ts index 17c7d9b8c2..a198df8cb2 100644 --- a/apps/desktop/src/lib/treeNodeClick.ts +++ b/apps/desktop/src/lib/treeNodeClick.ts @@ -79,5 +79,9 @@ export function sidebarSelectionCopyAction(event: ShortcutLikeEvent): SidebarSel export function copyNameForTreeNode(node: TreeNode): string { if (tableChildGroupNodeTypes.has(node.type) && node.tableName) return node.tableName; if (databaseChildGroupNodeTypes.has(node.type)) return node.schema || node.database || node.label; + if (node.type === "column") { + if (node.meta && "name" in node.meta) return node.meta.name; + return node.label.replace(/\s+\(.+\)$/, ""); + } return node.label; } diff --git a/packages/app-tests/treeNodeClick.test.ts b/packages/app-tests/treeNodeClick.test.ts index 58e492ca70..a0a6aeb782 100644 --- a/packages/app-tests/treeNodeClick.test.ts +++ b/packages/app-tests/treeNodeClick.test.ts @@ -136,3 +136,34 @@ test("copying database object group rows uses the parent schema or database name "db", ); }); + +test("copying column rows uses the column name without type suffix", () => { + assert.equal( + copyNameForTreeNode({ + id: "conn:db:public:orders:__columns:status", + label: "status (varchar)", + type: "column", + meta: { + name: "status", + data_type: "varchar", + is_nullable: true, + column_default: null, + is_primary_key: false, + extra: null, + comment: null, + numeric_precision: null, + numeric_scale: null, + character_maximum_length: null, + }, + }), + "status", + ); + assert.equal( + copyNameForTreeNode({ + id: "conn:db:public:orders:__columns:status", + label: "status (varchar)", + type: "column", + }), + "status", + ); +});