37
37
WHEN column_default = '1' THEN 'true'
38
38
WHEN column_default = '0' THEN 'false'
39
39
ELSE coalesce(column_default,'')
40
- END AS 'Default'
40
+ END AS 'Default',
41
+ coalesce(CHARACTER_MAXIMUM_LENGTH,50) AS 'VarcharSize'
41
42
from information_schema.columns
42
43
where (table_name,table_schema) = (?,?);`
43
44
args = append (args , col , project )
48
49
WHEN t.constraint_type = 'PRIMARY KEY' THEN 'PRI'
49
50
WHEN t.constraint_type = 'UNIQUE' THEN 'UNI'
50
51
ELSE ''
51
- END AS "Key"
52
+ END AS "Key",
53
+ -- Set the null values to 50
54
+ coalesce(isc.character_maximum_length,50) AS "VarcharSize"
52
55
FROM information_schema.columns isc
53
56
left join (select cu.table_schema, cu.table_name, cu.column_name, istc.constraint_type
54
57
from information_schema.constraint_column_usage cu
@@ -67,8 +70,10 @@ ORDER BY isc.ordinal_position;`
67
70
CASE
68
71
WHEN TC.CONSTRAINT_TYPE = 'PRIMARY KEY' THEN 'PRI'
69
72
WHEN TC.CONSTRAINT_TYPE = 'UNIQUE' THEN 'UNI'
73
+ WHEN TC.CONSTRAINT_TYPE = 'FOREIGN KEY' THEN 'MUL'
70
74
ELSE isnull(TC.CONSTRAINT_TYPE,'')
71
- END AS 'Key'
75
+ END AS 'Key',
76
+ coalesce(c.CHARACTER_MAXIMUM_LENGTH,50) AS 'VarcharSize'
72
77
FROM INFORMATION_SCHEMA.COLUMNS AS C
73
78
FULL JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS CC
74
79
ON C.COLUMN_NAME = CC.COLUMN_NAME
@@ -132,15 +137,17 @@ func (s *SQL) getForeignKeyDetails(ctx context.Context, project, col string) ([]
132
137
`
133
138
args = append (args , project , col )
134
139
case model .SQLServer :
135
- queryString = `SELECT
136
- CCU.TABLE_NAME, CCU.COLUMN_NAME, CCU.CONSTRAINT_NAME, RC.DELETE_RULE,
137
- isnull(KCU.TABLE_NAME,'') AS 'REFERENCED_TABLE_NAME', isnull(KCU.COLUMN_NAME,'') AS 'REFERENCED_COLUMN_NAME'
138
- FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU
139
- FULL JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc
140
- ON CCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
141
- FULL JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
142
- ON KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
143
- WHERE CCU.TABLE_SCHEMA = @p1 AND CCU.TABLE_NAME= @p2 AND KCU.TABLE_NAME= @p3`
140
+ queryString = `SELECT
141
+ CCU.TABLE_NAME, CCU.COLUMN_NAME, CCU.CONSTRAINT_NAME, RC.DELETE_RULE,
142
+ isnull(KCU2.TABLE_NAME,'') AS 'REFERENCED_TABLE_NAME', isnull(KCU2.COLUMN_NAME,'') AS 'REFERENCED_COLUMN_NAME'
143
+ FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU
144
+ FUll JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC
145
+ ON RC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME
146
+ FUll JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU
147
+ ON RC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
148
+ FUll JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2
149
+ ON RC.UNIQUE_CONSTRAINT_NAME = KCU2.CONSTRAINT_NAME
150
+ WHERE CCU.TABLE_SCHEMA = @p1 AND CCU.TABLE_NAME= @p2 AND KCU.TABLE_NAME= @p3`
144
151
args = append (args , project , col , col )
145
152
}
146
153
rows , err := s .client .QueryxContext (ctx , queryString , args ... )
0 commit comments