« first day (4880 days earlier)      last day (286 days later) » 

01:12
@ErikDarling given your substantial presence, i'm flattered my gaze warrants notice
 
4 hours later…
05:24
Wordle 1,061 3/6*

⬛⬛🟨⬛⬛
🟨🟨⬛🟨⬛
🟩🟩🟩🟩🟩
06:19
Wordle 1,061 4/6*

⬜⬜⬜⬜⬜
🟨🟨⬜🟨⬜
⬜🟩🟩🟩🟩
🟩🟩🟩🟩🟩
 
2 hours later…
08:22
Wordle 1,061 5/6*

⬛⬛⬛⬛⬛
🟨🟨⬛🟨⬛
⬛🟩⬛🟩🟩
⬛🟩🟩🟩🟩
🟩🟩🟩🟩🟩
09:05
A chairde - Morning all!
Tricky enough this morning!
Wordle 1,061 4/6

⬛⬛⬛⬛⬛
🟨⬛⬛⬛🟨
🟩🟩🟩🟩⬛
🟩🟩🟩🟩🟩
 
4 hours later…
it's franz ferdinand all over again! into the trenches!
13:43
big yikes
here i thought we had a monopoly all the crazies with guns
what are you jimmy kimmel
get these late night nyuck jokes outta here
this is the heap dammit
oh go squat a barbell
today i deadlift
yesterday was barbell low bar squatting the way god intended
as it was written: on the 3rd day, the Lord did Glutes
13:59
the lord is an ass man, according to our flemish friend
@HannahVernon I don't bother closing @cursor variables because they auto-close at the end of the scope. I don't really get the point of checking @@CURSOR_ROWS and it doesn't work with dynamic cursors. Just keep looping until the end.
I use @@CURSOR_ROWS because normally I like to know how many rows I'm dealing with. I use CLOSE @killer because you should always close and/or dispose everything unless you like hard to find bugs.
I always say always, too.
i never say always, and i always say never
one or more of us always lies
14:04
depending
one or more of us never lies
I never lie
prove it
Also I always use XACT_ABORT unless I don't
i think nocount is the only absolutely inconsistent one for me
14:08
3 mins ago, by Hannah Vernon
I never lie
@HannahVernon Unless you're using triggers?
@ErikDarling fixed it
@PaulWhite sometimes I like to trigger things unnecessarily
I've noticed
14:09
@ErikDarling MOD ABUSE
SPARSE columns can't have a DEFAULT constraint
because otherwise they wouldn't be sparse amiright
SQL Server just sets out to be annoying
@HannahVernon In this case, the DEFAULT would usually return NULL
@PaulWhite default null
oh i see
transcript needs a better isolation level
keeps changing while i'm trying to write
14:12
it's eventually consistent though
DEFAULT ERROR_MESSAGE() will always return NULL unless there's a CATCH block in the call stack above
But most things logged won't be errors, so I'd like the column to be SPARSE
error_message() is an en-var-chhhhhhhhhhar two-thousand and forty eight.
documented as nvarchar(4000)
@PaulWhite did I miss something I don't see no stinkin' call stack
It's a generic logging procedure that is sometimes called from within a CATCH` block, but usually not
14:16
SELECT
    object_name =
        OBJECT_NAME(ac.object_id),
    ac.name,
    ac.column_id,
    ac.system_type_id,
    ac.user_type_id,
    ac.max_length,
    ac.precision,
    ac.scale,
    ac.collation_name
FROM sys.all_columns AS ac
WHERE ac.object_id = OBJECT_ID('sys.messages');
@PaulWhite ohhhhhhh, the call stack above the ERROR_MESSAGE(), not the call stack in the preceding Heap messages lol
@HannahVernon Yep, the T-SQL call stack
going by sys.messages, the max length of an error message is 2,048 byte-aroos
i think that's also the max length of a raiserror
take it up with the documentation learns
are you both talking about logging error messages into a table with sparse columns? I feel like I'm only seeing half the convo lol. Which is probably best anyway.
14:18
make sure you quote the part that says sys.messages text doesn't contain placeholders that might expand the length
@HannahVernon yes, what are you, slow?
EXEC sys.sp_describe_first_result_set
    N'SELECT ERROR_MESSAGE();';
disappointing 2 me 4 me
@PaulWhite I prefer eventually consistent
@PaulWhite why would i do that
i think @PaulWhite just called me @JoshDarnell
@Zikato what's your take
ERROR_MESSAGE() is a waste of time because it only returns the first message. DBCC and BACKUP often have multiple.
just use XEvents
14:22
@ErikDarling I think 90% of the time I run that I have actual plan on and get an error message (max length 8000 bytes)
Nov 4, 2022 at 14:42, by Erik Darling
@msg should be 2048 if you're using it w/raiserror
The Heap Never Forgets
@PaulWhite one ping per message
so if someone where to ping @Zikato again that would be against the rules?
No reaction so far. I hope he hasn't been shot
Msg 11541, Level 16, State 1, Procedure sys.sp_describe_first_result_set, Line 1 [Batch Start Line 18]
sp_describe_first_result_set cannot be invoked when SET STATISTICS XML or SET STATISTICS PROFILE is on.
14:23
That's the one. Massively annoying.
you'd think they'd add code to turn that off at the beginning of the procedure
Yes, you would
Or just silently refuse to produce showplan like everything else
An error is unexpected
@HannahVernon yes
phew you're alive
yeah, I'm just working for a living
14:25
We're safe from integer overflow bugs a while longer
@ErikDarling my take on what?
I was quite surprise @lamak didn't notice my Pisco Picture
5 mins ago, by Erik Darling
i think @PaulWhite just called me @JoshDarnell
@Zikato either (a) the entire transcript since you were here last; or (b) pings for no reason, other than he just pinged the bass player
@HannahVernon didn't see it, sadly
14:28
2 days ago, by Hannah Vernon
user image
el gobernador, that's a good one
that's what I thought when I drank some. Very nice indeed. Much nicer than I expected it to be consider it's made from distilled grapes ala grappa
also, not expensive, which was nice
yup, they are note expensive really
for the transcript, the cross in the background is for decoration. I wanted to put one upside down, but my wife wouldn't let me.
14:32
Can't stop you standing on your head
it's good to keep vampires away from the liquor cabinet
good point
@PaulWhite I read the transcript chronologically. I was about to point out the sys.messages placeholders, but you've already done that. Nothing to add
Might've been a pointless ping for comedic effect then
One just never knows
14:41
DECLARE
    @error_message nvarchar(4000) =
        REPLICATE('A', 8000);

EXEC sp_addmessage
    50001,
    10,
    @error_message;

SELECT
    m.*,
    l = LEN(m.text),
    dl = DATALENGTH(m.text)
FROM sys.messages AS m
WHERE m.message_id = 50001;

EXEC sp_dropmessage
    50001;
those results are 3weird5me
i'm done
there's a PG job open somewhere, I heard
not high enough up
i want to rule with an iron fist
  create procedure sys.sp_addmessage
	@msgnum int = null,				-- Number of new message.
	@severity smallint = null,		-- Severity of new message.
	@msgtext nvarchar(255) = null,	-- Text of new message.
	@lang sysname = null,			-- language (name) of new message
	@with_log varchar(5) = null,	-- Whether the message will ALWAYS go to the NT event log
	@replace varchar(7) = null		-- Optional parameter to specify that
									-- existing message with same number should be overwritten.
oh chat
perhaps that is why the message length is 255 because it is truncated on the way in
also, someone at Microsoft used tabs instead of spaces
I bet they were fired
one more thing, why are so many description columns defined as nvarchar(60)
I mean 60 ? Why not 50 or 100, or 75, or 62.
also, is @Sean still pinned under that 3lb weight
15:01
@HannahVernon Why not sysname
Sexagesimal, also known as base 60, is a numeral system with sixty as its base. It originated with the ancient Sumerians in the 3rd millennium BC, was passed down to the ancient Babylonians, and is still used—in a modified form—for measuring time, angles, and geographic coordinates. The number 60, a superior highly composite number, has twelve factors, namely 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and 60, of which 2, 3, and 5 are prime numbers. With so many factors, many fractions involving sexagesimal numbers are simplified. For example, one hour can be divided evenly into sections of 30 minutes...
> The number 60, a superior highly composite number
FORMATMESSAGE:
> Is a string enclosed in single quotes and containing parameter value placeholders. The error message can have a maximum of 2,047 characters. If the message contains 2,048 or more characters, only the first 2,044 are displayed and an ellipsis is added to indicate that the message has been truncated. Note that substitution parameters consume more characters than the output shows because of internal storage behavior.
this is all over the place
imagine getting an error message about your error message
That said, I just managed to get RAISERROR to emit a string 4094 bytes in length (including a trailing elipsis)
15:17
bytes and characters
not quite the same thing
Yes
But you never know what you'll get until you try it
Especially with ancient things like RAISERROR
THROW:
> A string or variable that describes the exception. The message argument is nvarchar(2048).
@ErikDarling indeed
@PaulWhite sounds like government talk
Even so. If you define a column as nvarchar(2048) and insert an ERROR_MESSAGE value into it, there's an implicit conversion. No implicit conversion with an nvarchar(4000) column.
strange behavior
15:27
obligatory 4u
@HannahVernon Well, sysname is primarily for identifiers, isn't it?
@PaulWhite yes, I was just saying it seems arbitrary, and arbitrary is weird
4me
@HannahVernon The 128 in sysname is also arbitrary, as is 50 etc.
you'll notice I didn't say random, the way the kids say it
Probably someone tried to standardise things
15:29
don't post it
don't you post it
For all we know, there is indeed an internal DESCR_LENGTH constant
@ErikDarling It has got to the point where I really don't have to. You can see it without
I kind of expected it to be something about an internal column where they store that stuff which is an nvarchar(60)
Why would you limit people to 30 emoji
does anyone need more than 15 emotions
chat changed right b4 ur Is
15:31
I literally saw it happen
i still think 15 emotions is plenty
i need like 2.5
I make do with one
Tired
Due to waves arms around being so tiresome
i believe you're supposed to gestures at everything
local factors
15:32
at least they're not global factors
maybe if you declare your factors as factor variables they'll require less cleaning up
strings are so messed up
ANSI with code pages was awful, but did we really make things better
digging deep into the archives for a second, I saw this. And I'm not sure it was ever really concluded.
Jun 4, 2013 at 16:22, by Paul White
I've been meaning to ask, what emotion/expression is >.> ?
My current collation is Latin1_General_100_CI_AS_SC_UTF8
15:36
SC ?
Supplementary Characters
@PaulWhite why that?
@ErikDarling Was feeling adventurous when I installed SQL Server 2022
Embracing the moderns
I was sort of curious what it would affect
To which the answer so far is, not much
better call sol
15:41
seems like a missed opportunity to Czech your collation
as with most things, the further I look at something, I realize I understand less and less about it. I mean collation by itself seems like a hugely complex topic.
16:02
as a simple case-in-point, Solomon's page on the differences between various binary collations and cultures
simple - hah!
i don't know when i'd ever have time to fully understand collations
agreed. Taken from that page:
PRINT CASE WHEN N'½' COLLATE Latin1_General_100_CI_AS LIKE N'[0-1]' THEN 1 ELSE 0 END;
returns 1
yet,
PRINT CASE WHEN N'½' COLLATE Latin1_General_100_CI_AS LIKE N'[0]' THEN 1 ELSE 0 END;
PRINT CASE WHEN N'½' COLLATE Latin1_General_100_CI_AS LIKE N'[1]' THEN 1 ELSE 0 END;
both return 0
no thanks
i just figured out a bug in a function that had been bothering me for a couple weeks
demo is saved
turns out i should have declared a starting variable as 0 instead of 1
the weird part is it was only causing an issue with one row in the entire result set
i wonder what paul will think about those cursor options
maybe he's too tired tho~
16:36
busy atm
dispensing cash
hopefully accepting deposits
@ErikDarling did u kno set-based solutions are preferred
have u tried thinking insects
2
@HannahVernon that's a classic example. people seem to read 0-1 as a list, rather than a range, for some reason
i.e. sorts between 0 and 1 is v much not the same as compares equal to either 0 or 1
I always assumed LIKE treated items inside [...] as distinct characters. Now I see I was wrong.
sounds like u might b one of those 'people'
16:43
sounds like it
[01] would be a list
perhaps a comma would help
but then you'd have to escape commas
much like people around here have escaped apostrophes
or vice versa
freed apostrophe's
@PaulWhite i have one of those as well, both as an inline function and as a rewritten scalar function
i'm sure you'd be quite interested in those
really groundbreaking stuff
17:09
sounds like magik
o yeah
ctes and leads and sums and counts
u wdnt blv
u wd vmt w jy
1 ln f PS
I had occasion to find a gap or an island recently
Just as a small part of some other much more interesting thing
It really irked me that I had to stop and think about it to get it working properly
There really ought to be some trivial syntax for such things
It's an interesting problem to work from first principles to start with
you'd think
The shine comes off really quick
Like LONGEST_STREAK(...) for example
I read most of the language extensions Itzik gets excited about, but they always seem v abstract to me
I guess I'm just not the sort of person that enjoys forcing things to work against their apparent will
17:27
hard not to when t-sql is so limited, i guess
@nbk sorry, not sure what you mean? if you copy and paste that code into a query analyzer for MS SQL DB, it creates the simple table showing the data and then my SQL script that runs against it. — paygboy00 52 mins ago
17:41
iSQL/w those were the days
17:59
@PaulWhite Surprised you haven't chimed in on this one
1
Q: Index seeks and predicate push down

Dan DefI have a query of the following form: IF EXISTS ( SELECT 1 FROM ( SELECT RowID, OETID FROM @InMemoryTableTypeTable i UNION SELECT RowID, OETID FROM @InMemoryTableTypeTable d ) ...

@Charlieface i'd suggest inserting rows from each side of the union into #temp tables, then UNION ALL them.
why? what does that gain you over what I suggested?
I haven't read any of it, I just like to spout suggestions
maybe change the order of the query so the existence check is on the union instead of the union doing an existence check on the table
i don't have time to go through all the details, just an initial thought after looking at the main query
 
2 hours later…
19:41
Boat vs bridge again
does anything work anymore
maybe they were tired
> The Office of Emergency Management said in a statement that "vacuum gas oil from the barge has been visually confirmed in the water"
"vacuum gas oil", what a strange substance
suspiciously, plasma seems to be missing
o no my animal minerals
have a drink of organic water
y'all got any vegan cigarettes
19:57
only halal
Good answer
57
A: What is the purpose of the top tube on bicycles?

Warren BurtonSame basic purpose as the roof on a unibody car. To prevent the back end of the bike folding towards the front end when vertical forces like your brother are applied to the cranks or seat. Very simplified, without the top tube all of the bending moment needs to be resisted by the junction of the ...

20:13
excellent illustrations
20:26
jeez. there are 346 open issues on ola's scripts.
20:50
they must be good enough
21:13
4u
21:44
No 4ola
strangely - that same question gets asked multuiple times.
Noone ever queries any other parts of the bike frame.
There's probably a significant gender skew in those asking
Reminds me of the MySQL performance questions
22:02
how-so? Gender skew in mysql performance ?
In getting one's delicate parts entangled in various structural components
22:23
MySQL: Like getting your delicate parts entangled in various structural components
I don't know enough about mysql to comment.
I mean, my closest approach to database work is to turn around in my chair and say "Hey Tim, can you look at (blah) ?"
Tim's team has 6 DBAs, I can barely spell SQL
Why am I even here ?
Criggin about
I am SO stealing that !
Criggie in yo Resolver, twiddling your NS.
MySQL is sort of like a sunfish. Abandoned by god with no further thought.
I forgot to send that
Sorry to interrupt your flow
22:51
> Tim's team
Did you hire him just for the name
Tim’s two teammate trios
23:43
One of the last win 2012 hosts had enough and died.
Its been a busy morning

« first day (4880 days earlier)      last day (286 days later) »