fix(import-database): remove view_definition when importing via query (#702)

* fix(import-database): remove view_definition when importing via query

* fix(view_definition): remove view_definition in cockroachdb & maria

* fix

---------

Co-authored-by: Guy Ben-Aharon <baguy3@gmail.com>
This commit is contained in:
Jonathan Fishner 2025-05-14 18:59:09 +03:00 committed by GitHub
parent 0ce85cf76b
commit 481ad3c844
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 18 additions and 32 deletions

View File

@ -6,7 +6,7 @@ import { SSMSInfo } from './ssms-info/ssms-info';
import { useTranslation } from 'react-i18next';
import { Tabs, TabsList, TabsTrigger } from '@/components/tabs/tabs';
import type { DatabaseClient } from '@/lib/domain/database-clients';
import { minimizeQuery } from '@/lib/data/import-metadata/scripts/minimize-script';
import { minimizeQuery } from '@/lib/data/import-metadata/utils';
import {
databaseClientToLabelMap,
databaseTypeToClientsMap,

View File

@ -176,8 +176,7 @@ cols AS (
), views AS (
SELECT array_to_string(array_agg(CONCAT('{"schema":"', views.schemaname::TEXT,
'","view_name":"', viewname::TEXT,
'","view_definition":"', encode(convert_to(REPLACE(definition::TEXT, '"', '\\"'), 'UTF8'), 'base64'),
'"}')),
'","view_definition":""}')),
',') AS views_metadata
FROM pg_views views
WHERE views.schemaname NOT IN ('information_schema', 'pg_catalog')${cockroachdbViewsFilter}

View File

@ -123,7 +123,7 @@ export const mariaDBQuery = `WITH fk_info as (
AND table_schema = DATABASE()
AND (0x00) IN (@views:=CONCAT_WS(',', @views, CONCAT('{', '"schema":"', \`TABLE_SCHEMA\`, '",',
'"view_name":"', \`TABLE_NAME\`, '",',
'"view_definition":"', REPLACE(REPLACE(TO_BASE64(VIEW_DEFINITION), ' ', ''), '\n', ''), '"}'))) ) )
'"view_definition":""}'))) ) )
)
(SELECT CAST(CONCAT('{"fk_info": [',IFNULL(@fk_info,''),
'], "pk_info": [', IFNULL(@pk_info, ''),

View File

@ -1,9 +0,0 @@
export const minimizeQuery = (query: string) => {
if (!query) return '';
// Split into lines, trim leading spaces from each line, then rejoin
return query
.split('\n')
.map((line) => line.replace(/^\s+/, '')) // Remove only leading spaces
.join('\n');
};

View File

@ -133,7 +133,7 @@ export const getMySQLQuery = (
AND table_schema = DATABASE()
AND (0x00) IN (@views:=CONCAT_WS(',', @views, CONCAT('{', '"schema":"', \`TABLE_SCHEMA\`, '",',
'"view_name":"', \`TABLE_NAME\`, '",',
'"view_definition":"', REPLACE(REPLACE(TO_BASE64(VIEW_DEFINITION), ' ', ''), '\n', ''), '"}'))) ) )
'"view_definition":""}'))) ) )
)
(SELECT CAST(CONCAT('{"fk_info": [',IFNULL(@fk_info,''),
'], "pk_info": [', IFNULL(@pk_info, ''),
@ -286,7 +286,7 @@ export const getMySQLQuery = (
) FROM (
SELECT \`TABLE_SCHEMA\`,
\`TABLE_NAME\` AS view_name,
REPLACE(REPLACE(TO_BASE64(\`VIEW_DEFINITION\`), ' ', ''), '\n', '') AS view_definition
null AS view_definition
FROM information_schema.views vws
WHERE vws.table_schema = DATABASE()
) AS vws), ''),

View File

@ -245,8 +245,7 @@ cols AS (
), views AS (
SELECT array_to_string(array_agg(CONCAT('{"schema":"', views.schemaname,
'","view_name":"', viewname,
'","view_definition":"', encode(convert_to(REPLACE(definition, '"', '\\"'), 'UTF8'), 'base64'),
'"}')),
'","view_definition":""}')),
',') AS views_metadata
FROM pg_views views
WHERE views.schemaname NOT IN ('information_schema', 'pg_catalog') ${

View File

@ -166,15 +166,7 @@ views AS (
JSON_QUERY(N'{
"schema": "' + STRING_ESCAPE(COALESCE(REPLACE(s.name, '"', ''), ''), 'json') +
'", "view_name": "' + STRING_ESCAPE(COALESCE(REPLACE(v.name, '"', ''), ''), 'json') +
'", "view_definition": "' +
STRING_ESCAPE(
CAST(
'' AS XML
).value(
'xs:base64Binary(sql:column("DefinitionBinary"))',
'VARCHAR(MAX)'
), 'json') +
N'"}') COLLATE DATABASE_DEFAULT
'", "view_definition": ""}') COLLATE DATABASE_DEFAULT
), N','
) + N']' AS all_views_json
FROM sys.views v
@ -385,12 +377,7 @@ views AS (
N'{
"schema": "' + STRING_ESCAPE(COALESCE(REPLACE(s.name, '"', ''), ''), 'json') +
'", "view_name": "' + STRING_ESCAPE(COALESCE(REPLACE(v.name, '"', ''), ''), 'json') +
'", "view_definition": "' +
CAST(
(
SELECT CAST(OBJECT_DEFINITION(v.object_id) AS VARBINARY(MAX)) FOR XML PATH('')
) AS NVARCHAR(MAX)
) + N'"}'
'", "view_definition": ""}'
)
)
FROM

View File

@ -78,3 +78,13 @@ export const isStringMetadataJson = (metadataJsonString: string): boolean => {
return result;
};
export const minimizeQuery = (query: string) => {
if (!query) return '';
// Split into lines, trim leading spaces from each line, then rejoin
return query
.split('\n')
.map((line) => line.replace(/^\s+/, '')) // Remove only leading spaces
.join('\n');
};