Skip to content

Commit 713432f

Browse files
committed
remove undoc spt_values usage
1 parent 721dfa6 commit 713432f

File tree

5 files changed

+75
-169
lines changed

5 files changed

+75
-169
lines changed

appveyor/install_tsqlt.ps1

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ param(
1515
Write-Host "Installing tSQLt..." -ForegroundColor $Color
1616

1717
If ($IsAzureSQL) {
18-
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Database -InputFile $tSQLtInstallScript -Username $User -Password $Pass
18+
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Database -InputFile $tSQLtInstallScript -Verbose -Username $User -Password $Pass
1919
}
2020
Else {
2121
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Master -InputFile $clrscript | Out-Null
2222
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Master -InputFile $CreateDBScript | Out-Null
23-
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Database -InputFile $tSQLtInstallScript
23+
Invoke-SqlCmd -ServerInstance $SqlInstance -Database $Database -InputFile $tSQLtInstallScript -Verbose
2424
}

install_expsql.sql

-101 KB
Binary file not shown.

sp_helpme.sql

Lines changed: 40 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ ALTER PROCEDURE [dbo].[sp_helpme]
1717
,@SqlMajorVersion TINYINT = 0
1818
,@SqlMinorVersion SMALLINT = 0
1919
AS
20-
20+
2121
/*
2222
sp_helpme - Part of the ExpressSQL Suite https://expresssql.lowlydba.com/
2323
@@ -46,7 +46,7 @@ Example:
4646
EXEC sp_helpme 'dbo.Sales';
4747
4848
*/
49-
49+
5050
BEGIN
5151
SET NOCOUNT ON;
5252

@@ -98,50 +98,24 @@ BEGIN
9898
-- If no @objname given, give a little info about all objects.
9999
IF (@objname IS NULL)
100100
BEGIN;
101-
IF (SERVERPROPERTY('EngineEdition') != 5)
102-
BEGIN -- begin SQL Server
103-
SET @SQLString = N'SELECT
104-
[Name] = o.[name],
105-
[Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
106-
[Object_type] = SUBSTRING(v.[name],5,31),
107-
[Create_datetime] = o.create_date,
108-
[Modify_datetime] = o.modify_date,
109-
[ExtendedProperty] = ep.[value]
110-
FROM sys.all_objects o
111-
INNER JOIN [master].dbo.spt_values v ON o.[type] = SUBSTRING(v.[name],1,2) COLLATE DATABASE_DEFAULT
112-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
113-
and ep.[name] = @epname
114-
AND ep.minor_id = 0
115-
AND ep.class = 1
116-
WHERE v.[type] = ''O9T''
117-
ORDER BY [Owner] ASC, Object_type DESC, [name] ASC;';
118-
SET @ParmDefinition = N'@epname SYSNAME';
119-
120-
EXEC sp_executesql @SQLString
121-
,@ParmDefinition
122-
,@epname;
123-
END --end SQL Server objects
124-
ELSE
125-
BEGIN -- begin Azure SQL
126-
SET @SQLString = N'SELECT
127-
[Name] = o.[name],
128-
[Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
129-
[Object_type] = LOWER(REPLACE(o.type_desc, ''_'', '' '')),
130-
[Create_datetime] = o.create_date,
131-
[Modify_datetime] = o.modify_date,
132-
[ExtendedProperty] = ep.[value]
133-
FROM sys.all_objects o
134-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
135-
and ep.[name] = @epname
136-
AND ep.minor_id = 0
137-
AND ep.class = 1
138-
ORDER BY [Owner] ASC, Object_type DESC, [name] ASC;';
139-
SET @ParmDefinition = N'@epname SYSNAME';
101+
SET @SQLString = N'SELECT
102+
[Name] = [o].[name],
103+
[Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
104+
[Object_type] = LOWER(REPLACE([o].[type_desc], ''_'', '' '')),
105+
[Create_datetime] = [o].[create_date],
106+
[Modify_datetime] = [o].[modify_date],
107+
[ExtendedProperty] = [ep].[value]
108+
FROM [sys].[all_objects] [o]
109+
LEFT JOIN [sys].[extended_properties] [ep] ON [ep].[major_id] = [o].[object_id]
110+
and [ep].[name] = @epname
111+
AND [ep].[minor_id] = 0
112+
AND [ep].[class] = 1
113+
ORDER BY [Owner] ASC, [Object_type] DESC, [name] ASC;';
114+
SET @ParmDefinition = N'@epname SYSNAME';
140115

141-
EXEC sp_executesql @SQLString
142-
,@ParmDefinition
143-
,@epname;
144-
END --end Azure SQL objects
116+
EXEC sp_executesql @SQLString
117+
,@ParmDefinition
118+
,@epname;
145119

146120
-- Display all user types
147121
SET @SQLString = N'SELECT
@@ -245,55 +219,26 @@ BEGIN
245219
END --Systypes
246220

247221
-- FOUND IT IN SYSOBJECT, SO GIVE OBJECT INFO
248-
IF (SERVERPROPERTY('EngineEdition') != 5)
249-
BEGIN -- begin SQL Server
250-
SET @SQLString = N'SELECT
251-
[Name] = o.name,
252-
[Owner] = user_name(ObjectProperty(object_id, ''ownerid'')),
253-
[Type] = substring(v.name,5,31),
254-
[Created_datetime] = o.create_date,
255-
[Modify_datetime] = o.modify_date,
256-
[ExtendedProperty] = ep.[value]
257-
FROM sys.all_objects o
258-
INNER JOIN master.dbo.spt_values v ON o.type = substring(v.name,1,2) collate DATABASE_DEFAULT
259-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
260-
AND ep.[name] = @epname
261-
AND ep.minor_id = 0
262-
AND ep.class = 1
263-
WHERE v.type = ''O9T''
264-
AND o.object_id = @ObjID;';
265-
266-
SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
267-
268-
EXEC sp_executesql @SQLString
269-
,@ParmDefinition
270-
,@ObjID
271-
,@epname;
272-
273-
END -- end SQL Server
274-
ELSE
275-
BEGIN -- begin Azure SQL
276-
SET @SQLString = N'SELECT
277-
[Name] = o.name,
278-
[Owner] = user_name(ObjectProperty(object_id, ''ownerid'')),
279-
[Type] = LOWER(REPLACE(o.type_desc, ''_'', '' '')),
280-
[Created_datetime] = o.create_date,
281-
[Modify_datetime] = o.modify_date,
282-
[ExtendedProperty] = ep.[value]
283-
FROM sys.all_objects o
284-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
285-
AND ep.[name] = @epname
286-
AND ep.minor_id = 0
287-
AND ep.class = 1
288-
WHERE o.object_id = @ObjID;';
289-
290-
SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
222+
SET @SQLString = N'SELECT
223+
[Name] = [o].[name],
224+
[Owner] = USER_NAME(ObjectProperty([o].[object_id], ''ownerid'')),
225+
[Type] = LOWER(REPLACE([o].[type_desc], ''_'', '' '')),
226+
[Created_datetime] = [o].[create_date],
227+
[Modify_datetime] = [o].[modify_date],
228+
[ExtendedProperty] = [ep].[value]
229+
FROM [sys].[all_objects] [o]
230+
LEFT JOIN [sys].[extended_properties] [ep] ON [ep].[major_id] = [o].[object_id]
231+
AND [ep].[name] = @epname
232+
AND [ep].[minor_id] = 0
233+
AND [ep].[class] = 1
234+
WHERE [o].[object_id] = @ObjID;';
235+
236+
SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
291237

292-
EXEC sp_executesql @SQLString
293-
,@ParmDefinition
294-
,@ObjID
295-
,@epname;
296-
END -- end Azure SQL
238+
EXEC sp_executesql @SQLString
239+
,@ParmDefinition
240+
,@ObjID
241+
,@epname;
297242

298243
-- Display column metadata if table / view
299244
SET @SQLString = N'
@@ -303,7 +248,7 @@ BEGIN
303248
-- SET UP NUMERIC TYPES: THESE WILL HAVE NON-BLANK PREC/SCALE
304249
-- There must be a '','' immediately after each type name (including last one),
305250
-- because that''s what we''ll search for in charindex later.
306-
DECLARE @precscaletypes nvarchar(150);
251+
DECLARE @precscaletypes NVARCHAR(150);
307252
SELECT @precscaletypes = N''tinyint,smallint,decimal,int,bigint,real,money,float,numeric,smallmoney,date,time,datetime2,datetimeoffset,''
308253
309254
-- INFO FOR EACH COLUMN
@@ -322,7 +267,7 @@ BEGIN
322267
else '' '' end,
323268
[Nullable] = case when [ac].[is_nullable] = 0 then ''no'' else ''yes'' end, ';
324269

325-
--Only include if the exist on the current version
270+
--Only include if they exist on the current version
326271
IF @HasMasked = 1
327272
BEGIN
328273
SET @SQLString = @SQLString + N'[Masked] = case when is_masked = 0 then ''no'' else ''yes'' end, ';

tests/build/sp_helpme_tests.sql

Lines changed: 29 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -84,42 +84,21 @@ CREATE TABLE #Expected (
8484
,[ExtendedProperty] SQL_VARIANT NULL
8585
)
8686

87-
IF (@EngineEdition <> 5) --Non-Azure SQL
88-
BEGIN
89-
INSERT INTO #Expected
90-
SELECT
91-
[Name] = o.name,
92-
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
93-
[Type] = substring(v.name,5,31),
94-
[Created_datetime] = o.create_date,
95-
[Modify_datetime] = o.modify_date,
96-
[ExtendedProperty] = ep.[value]
97-
FROM sys.all_objects o
98-
INNER JOIN master.dbo.spt_values v ON o.type = substring(v.name,1,2) collate DATABASE_DEFAULT
99-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
100-
AND ep.[name] = @epname
101-
AND ep.minor_id = 0
102-
AND ep.class = 1
103-
WHERE v.type = 'O9T'
104-
AND o.name = 'CaptureOutputLog';
105-
END;
106-
ELSE IF (@EngineEdition = 5) --Azure SQL
107-
BEGIN
108-
INSERT INTO #Expected
109-
SELECT
110-
[Name] = o.name,
111-
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
112-
[Type] = LOWER(REPLACE(o.type_desc, '_', ' ')),
113-
[Created_datetime] = o.create_date,
114-
[Modify_datetime] = o.modify_date,
115-
[ExtendedProperty] = ep.[value]
116-
FROM sys.all_objects o
117-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
118-
AND ep.[name] = @epname
119-
AND ep.minor_id = 0
120-
AND ep.class = 1
121-
WHERE o.name = 'CaptureOutputLog';
122-
END;
87+
INSERT INTO #Expected
88+
SELECT
89+
[Name] = o.name,
90+
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
91+
[Type] = LOWER(REPLACE(o.type_desc, '_', ' ')),
92+
[Created_datetime] = o.create_date,
93+
[Modify_datetime] = o.modify_date,
94+
[ExtendedProperty] = ep.[value]
95+
FROM sys.all_objects o
96+
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
97+
AND ep.[name] = @epname
98+
AND ep.minor_id = 0
99+
AND ep.class = 1
100+
WHERE o.name = 'CaptureOutputLog';
101+
123102

124103
CREATE TABLE #Actual (
125104
[name] SYSNAME NOT NULL
@@ -217,42 +196,20 @@ CREATE TABLE #Expected (
217196
,[ExtendedProperty] SQL_VARIANT NULL
218197
)
219198

220-
IF (@EngineEdition <> 5) --Non-Azure SQL
221-
BEGIN
222-
INSERT INTO #Expected
223-
SELECT
224-
[Name] = o.name,
225-
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
226-
[Type] = substring(v.name,5,31),
227-
[Created_datetime] = o.create_date,
228-
[Modify_datetime] = o.modify_date,
229-
[ExtendedProperty] = ep.[value]
230-
FROM sys.all_objects o
231-
INNER JOIN master.dbo.spt_values v ON o.type = substring(v.name,1,2) collate DATABASE_DEFAULT
232-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
233-
AND ep.[name] = @epname
234-
AND ep.minor_id = 0
235-
AND ep.class = 1
236-
WHERE v.type = 'O9T'
237-
AND o.name = @TableName;
238-
END;
239-
ELSE IF (@EngineEdition = 5) --Azure SQL
240-
BEGIN
241-
INSERT INTO #Expected
242-
SELECT
243-
[Name] = o.name,
244-
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
245-
[Type] = LOWER(REPLACE(o.type_desc, '_', ' ')),
246-
[Created_datetime] = o.create_date,
247-
[Modify_datetime] = o.modify_date,
248-
[ExtendedProperty] = ep.[value]
249-
FROM sys.all_objects o
250-
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
251-
AND ep.[name] = @epname
252-
AND ep.minor_id = 0
253-
AND ep.class = 1
254-
WHERE o.name = @TableName;
255-
END;
199+
INSERT INTO #Expected
200+
SELECT
201+
[Name] = o.name,
202+
[Owner] = user_name(ObjectProperty(object_id, 'ownerid')),
203+
[Type] = LOWER(REPLACE(o.type_desc, '_', ' ')),
204+
[Created_datetime] = o.create_date,
205+
[Modify_datetime] = o.modify_date,
206+
[ExtendedProperty] = ep.[value]
207+
FROM sys.all_objects o
208+
LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
209+
AND ep.[name] = @epname
210+
AND ep.minor_id = 0
211+
AND ep.class = 1
212+
WHERE o.name = @TableName;
256213

257214
CREATE TABLE #Actual (
258215
[name] SYSNAME NOT NULL

tests/run/run_tests.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
SET ANSI_NULLS ON;
2+
SET QUOTED_IDENTIFIER ON;
3+
SET NOCOUNT ON;
4+
15
EXEC tSQLt.RunAll;

0 commit comments

Comments
 (0)