Skip to content

Commit 7cf1bf7

Browse files
committed
Prevent inserting duplicate rows in metadata tables.
1 parent 2f6923b commit 7cf1bf7

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

sql/sqlserver/metadata/Step02-InstallMetadataProcedures.sql

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ AS BEGIN
4545
DECLARE @SQL NVARCHAR(max) = N'
4646
USE [?]; DECLARE @database SYSNAME = DB_NAME();
4747
INSERT INTO #tapcatalogs
48-
SELECT
48+
SELECT DISTINCT
4949
@database,
5050
REPLACE(@database, ''SkyNode_'', ''''),
5151
CASE WHEN [meta.summary] IS NULL THEN N'''' ELSE CAST([meta.summary] AS NVARCHAR(max)) END AS summary,
@@ -116,7 +116,7 @@ AS BEGIN
116116
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME = ''tables'' AND TABLE_SCHEMA=''TAP_SCHEMA'') -- try first using metadata in TAP_SCHEMA
117117
BEGIN
118118
INSERT INTO #taptables
119-
SELECT
119+
SELECT DISTINCT
120120
t.TABLE_SCHEMA [schema_name],
121121
REPLACE(@database, ''SkyNode_'', '''') + ''_'' + t.TABLE_NAME table_name,
122122
''view'' [table_type], COALESCE(ts.description, N'''') description, ts.utype, NULL as [table_index]
@@ -126,7 +126,7 @@ AS BEGIN
126126
ELSE IF EXISTS(SELECT name from sys.tables where name = ''dbobjects'') -- try using metadata in dbobjects table
127127
BEGIN
128128
INSERT INTO #taptables
129-
SELECT
129+
SELECT DISTINCT
130130
ta.[schema_name],
131131
REPLACE(@database, ''SkyNode_'', '''') + ''_'' + ta.table_name as table_name,
132132
''view'' [table_type], COALESCE(do.description, N'''') description, NULL utype, NULL as [table_index]
@@ -142,7 +142,7 @@ AS BEGIN
142142
ELSE
143143
BEGIN
144144
INSERT INTO #taptables
145-
SELECT
145+
SELECT DISTINCT
146146
''dbo'' as ''schema_name'',
147147
REPLACE(@database, ''SkyNode_'', '''') + ''_'' + table_name as ''table_name'',
148148
''view'' as table_type,
@@ -217,35 +217,35 @@ AS BEGIN
217217
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES where TABLE_NAME = ''columns'' AND TABLE_SCHEMA=''TAP_SCHEMA'') -- try first using metadata in TAP_SCHEMA
218218
BEGIN
219219
INSERT INTO #tapcolumns
220-
SELECT
220+
SELECT DISTINCT
221221
c.TABLE_SCHEMA schema_name, REPLACE(@database, ''SkyNode_'', '''') + ''_'' + c.TABLE_NAME as table_name, c.COLUMN_NAME,
222222
COALESCE(tc.description, N'''') description, COALESCE(tc.unit, N'''') unit, COALESCE(tc.ucd, N'''') ucd, COALESCE(tc.utype, N'''') utype,
223-
c.DATA_TYPE as datatype, c.CHARACTER_MAXIMUM_LENGTH as size, c.CHARACTER_MAXIMUM_LENGTH arraysize, c.NUMERIC_PRECISION precision, c.NUMERIC_SCALE scale, 1 principal,0 as indexed, 0 as std, ic.ordinal_position column_index
223+
c.DATA_TYPE as datatype, c.CHARACTER_MAXIMUM_LENGTH as size, c.CHARACTER_MAXIMUM_LENGTH arraysize, c.NUMERIC_PRECISION precision, c.NUMERIC_SCALE scale, 1 principal,0 as indexed, 0 as std, c.ordinal_position column_index
224224
FROM INFORMATION_SCHEMA.COLUMNS c
225-
LEFT JOIN TAP_SCHEMA.columns AS tc ON c.COLUMN_NAME = tc.COLUMN_NAME and c.TABLE_NAME = tc.TABLE_NAME and c.TABLE_SCHEMA = tc.schema_name
225+
LEFT JOIN TAP_SCHEMA.columns AS tc ON c.COLUMN_NAME = tc.COLUMN_NAME AND c.TABLE_NAME = tc.TABLE_NAME
226226
ORDER BY table_name, column_index
227227
END
228228
ELSE IF EXISTS(SELECT name from sys.tables where name = ''DBColumns'') -- try using metadata in DBColumns table
229229
BEGIN
230230
INSERT INTO #tapcolumns
231-
SELECT
231+
SELECT DISTINCT
232232
c.TABLE_SCHEMA schema_name, REPLACE(@database, ''SkyNode_'', '''') + ''_'' + c.TABLE_NAME as table_name, c.COLUMN_NAME,
233233
COALESCE(dc.description, N'''') description, COALESCE(dc.unit, N'''') unit, COALESCE(dc.ucd, N'''') ucd, N'''' utype,
234-
c.DATA_TYPE as datatype, c.CHARACTER_MAXIMUM_LENGTH as size, c.CHARACTER_MAXIMUM_LENGTH arraysize, c.NUMERIC_PRECISION precision, c.NUMERIC_SCALE scale, 1 principal,0 as indexed, 0 as std, ic.ordinal_position column_index
234+
c.DATA_TYPE as datatype, c.CHARACTER_MAXIMUM_LENGTH as size, c.CHARACTER_MAXIMUM_LENGTH arraysize, c.NUMERIC_PRECISION precision, c.NUMERIC_SCALE scale, 1 principal,0 as indexed, 0 as std, c.ordinal_position column_index
235235
FROM INFORMATION_SCHEMA.COLUMNS c
236236
LEFT JOIN DBColumns AS dc ON dc.name = c.COLUMN_NAME AND dc.tablename = c.TABLE_NAME
237237
ORDER BY table_name, column_index
238238
END
239239
ELSE
240240
BEGIN
241241
INSERT INTO #tapcolumns
242-
SELECT
243-
[schema_name], REPLACE(@database, ''SkyNode_'', '''') + ''_'' + table_name as table_name, column_name,
242+
SELECT DISTINCT
243+
schema_name, REPLACE(@database, ''SkyNode_'', '''') + ''_'' + table_name as table_name, column_name,
244244
COALESCE(CAST([meta.summary] AS NVARCHAR(max)), N'''') as description, COALESCE(CAST([meta.unit] AS NVARCHAR(max)), N'''') as unit, COALESCE(CAST([meta.quantity] AS NVARCHAR(max)), N'''') as ucd, N'''' as utype,
245245
datatype, size, arraysize, precision, scale, 1 as principal, 0 as indexed, 0 as std, column_index
246246
FROM
247247
(
248-
SELECT
248+
SELECT
249249
table_name, c.name column_name, col.DATA_TYPE datatype, c.max_length size, c.max_length arraysize, c.precision, c.scale, col.ordinal_position column_index, col.TABLE_SCHEMA schema_name, ep.name property_name, ep.value property_value
250250
FROM sys.columns c
251251
JOIN sys.all_objects o ON c.object_id = o.object_id

0 commit comments

Comments
 (0)