mirror of
https://github.com/chartdb/chartdb.git
synced 2026-02-20 01:03:53 +08:00
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:
parent
0ce85cf76b
commit
481ad3c844
@ -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,
|
||||
|
||||
@ -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}
|
||||
|
||||
@ -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, ''),
|
||||
|
||||
@ -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');
|
||||
};
|
||||
@ -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), ''),
|
||||
|
||||
@ -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') ${
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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');
|
||||
};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user