« first day (1647 days earlier)      last day (3225 days later) » 

1:16 AM
@bluefeet No idea
 
 
4 hours later…
5:33 AM
Morning (08:33)
2
 
 
2 hours later…
7:07 AM
Is it true what i've just heard ? that if I have SP , and I declare (inside) declare @i int ( not as parameter , but inside the Sp's body) , and then I have a query which uses : ....where myindexColumn=@i , then it won't use the index ?
(There's a DBA in our company right now who came to speed up our queries) so he told me that
It seems that he's right : brentozar.com/archive/2014/06/…
I didn't know that
( ...after reading , I also learned about temp SPs.... wow ... 2 things and it's only morning:-))
 
@RoyiNamir No that's not true. It impacts cardinality estimates, which affects the decision to seek or scan, but it doesn't prevent use of the index.
 
Sorry. bad wording of mine (indeed!). I meant "will not use the index's benefit as seek , but scan"
Thank you for clarifying and again , sorry
 
 
1 hour later…
8:22 AM
hello everybody
 
morning
 
@dezso good morning
@dezso would you mind helping me in sql?
Following is a part of my stored procedure
 
@SpringLearner it depends on your problem :) I have to do some work, but a few minutes can be spared
 
DECLARE @CCLink INT,@SQL NVARCHAR(MAX),@IndentDocument NVARCHAR(10)
		set @CCLink=50042
		SET @SQL='SELECT ProductID,SUM(Quantity) ReqQty, C.DCCCNID29 PartID FROM INV_DocDetails T WITH(NOLOCK)
		INNER JOIN COM_DocCCData C WITH(NOLOCK) ON T.InvDocDetailsID=C.InvDocDetailsID
		WHERE CostCenterID='+@IndentDocument+'
		AND dcCCNID'+CONVERT(NVARCHAR,@CCLink)+'='+CONVERT(NVARCHAR,36129)+' GROUP BY ProductID, C.DCCCNID29'
if I print @CCLink then I get 50042 on my console
if I write print 1 then I get 1 on my console
 
not surprisingly
 
8:25 AM
but when I write print @SQL I dont get anything
its empty
console
can you tell me please how to print the generated string?
 
I guess it's because you don't assign anything to @IndentDocument, so it stays NULL, therefore the result of the concatenation is also NULL
 
You also need to be careful about SQL injection.
And use a length with conversions to nvarchar.
And stop putting NOLOCK on everything.
In short: read everything Aaron Bertrand has ever written.
6
 
@PaulWhite I am very much relieved that you are around :)
I was hoping I wasn't the greatest TSQL expert in the room
 
To finish @dezso's explanation, when a @variable is null, print @variable doesn't print anything.
 
Or what it prints is unknown or missing ;)
 
8:28 AM
@dezso yes you are right
@PaulWhite the code has been devloped 5 years back
I am just understanding their logic
The SP has 5000 lines
 
@dezso You were the best one of those that were addressed directly at the time :)
 
so I am just debugging
thanks all of you
 
@PaulWhite Nah, I go with @AndriyM here. If it prints it, it is no longer unknown or missing. It's there, right before my eyes.
 
@SpringLearner that sounds fun
@AndriyM true. My vast experience stems from the 7.0 times - 2000 was already out, but we did not have it. This way I had to invent creative ways to rewrite things that used UDFs (because the dev had a 2000 installation)
 
@dezso which one is fun?Sorry I dont understand why you said that
 
8:36 AM
@SpringLearner a 5000 line SP
 
i.e. not fun at all
 
Debugging it, in particular
 
if you hover above the message, you see which one it is answering
 
ohh yes
 
I think the longest postgres function (which, from many points of view, can be seen as a SP) I ever wrote was about 500 lines
 
8:41 AM
I have 2 systems A and B
System A has sql server in it
and System B has sql management studio
from B I am accessing A by ip address as username and password
my question is cant I run debug mode from system B?
I asked because when ever I click on debug button
I get the following error
 
Check the requirements for T-SQL debugging here
 
thanks
I will try and get back to you
 
@dezso I've never seen 7.0. So, you are saying it didn't have functions. Might not have been entirely bad, because people were unable to abuse the option either. But yeah, rewriting something that's already implemented as a function... Some fun too, probably not much worse than a 5000-line SP :)
 
8:59 AM
@AndriyM UDFs came in 2000, yes
unrelated: it looks like nobody dares to review the recent tag description suggestions
 
9:15 AM
@dezso I don't even know where those are
 
@dezso Thanks
Not sure if I have enough rep..
 
 
1 hour later…
10:21 AM
@PaulWhite reason for the rejection of this?: dba.stackexchange.com/review/suggested-edits/49419
(I approved after removing the Postges-only material)
 
What is the difference between the [update] tag and [sql-update]?
 
@MarkSinkinson Ah, didn't notice it was a tag with only 2 questions.
and now 0
 
@ypercube Yes that's why I wrote "This new tag is unnecessary. It should be a synonym of update or deleted." in the rejection reason. I proposed the necessary synonym.
But it would be nice if just disappeared.
 
10:48 AM
@PaulWhite It may come with migrated questions, though.
 
I'm voting to close this question as off-topic because it has already been asked at SO: stackoverflow.com/questions/30949152/…ypercube 22 mins ago
very creative way of closing crossposts :)
@PaulWhite now I checked, the disappeared
 
I'm not sure how tags work, whether they evaporate if unused or not. I could check meta but I don't care enough.
 
@dezso I was about to link you to this :)
 
And there it is :)
 
the synonyms page/suggestions confuse me all the time
I never know if I voted for a to be a synonym of b or the opposite
 
10:54 AM
@JackDouglas does it mean that it needs half a year to disappear?
 
looks like it - does :S
 
0
Q: To manage pointers to big binary files in Partial index of PostgreSQL?

MasiAssume you have binary data files of size > 1GB. These files contains events each marked by 585 in hex. I convert the binary to hex by xxd -ps data.raw | sed ':a;N;$!ba;s/\n//g'. I can get wanted hex position to binary back by |xxd -r. I characterize characteristics of data in hex about which...

they characterize characteristics of data in there
 
@ypercube Same here. Plus it is hard to find.
And needs a review queue.
@JonEricson why was it never tried to simply create a review queue for them? I was thinking this morning about how tag synonyms always require mod intervention on P.SE (and on lower volume sites than SO altogether this is probably always the case), and my thought was make it a simple privilege just like the others: 7.5k or 10k or whatever required, 4-5 votes required to pass it, and a review queue to ensure it gathers those votes, the last part was obviously key when I thought about this as tag suggestions would quickly be overlooked. — Jimmy Hoffa Sep 16 '13 at 14:45
Oh. This.
49
Q: Improving Tag Synonyms

jmacExecutive Summary Jon Ericson asked, Does the tag synonym suggestion system work? The answer, unfortunately, is no. Tag Synonyms were introduced in August 2010: It’s been clear for a very long time now that we needed some kind of tag synonym system, one that the community itself could main...

Anyone who can, please vote for as a synonym of here
 
11:30 AM
done
 
not worthy
 
@TomV a 3PAR has been also abandoned here
 
@MikaelEriksson It's a crazy system :)
 
Well, you got to know something about the tag in question and apparently I don't.
On the other hand, that rules work fine for SO with a lot of different things but on a specialized site like DBA it does not work all that well.
 
12:02 PM
Your statements are either indicating a serious bug (did you file a bug report?), a serious bug in the way you dump your database or some misunderstanding. Lacking any facts one cannot decide among these. — dezso 8 secs ago
BTW, where has Derek been recently?
 
@dezso An ask if updation is performant
7
 
12:24 PM
@MikaelEriksson oh really
 
Just typed it to torment a mod that has opinions about language like that. Couldn't resist, sry .... :)
 
getting frustrated by cursors here
I pulled a query out of a cursor declaration, changed maxdop settings (somebody changed them to 1, testing with 0 now)
the query in ssms is using a new plan
the cursor is still using the old one
I.e. not parallel
 
 
1 hour later…
1:36 PM
Do you have any reason for not using the standard syntax? — dezso 7 secs ago
 
1:50 PM
@dezso me?
thats how ax works
 
@TomV that wasn't a reply to you
it's a link to a comment on main
if you click the link ("dezso 7 secs ago") it'll take you there
 
@dezso the "codes" was inherited :)
 
2:20 PM
@TomV Not all cursor types support a parallel plan. What is the reason for a non-parallel plan shown in the query plan (assuming you have 2012 or later)?
 
@PaulWhite I'm downloading SSMS 2012, i suppose that's enough?
 
No the server that creates the plan must be >= 2012
Dynamic and fast forward cursors do not support parallelism
If it's a different type of cursor, it's likely a costing issue.
It's just possible the cursor plan is still cached as well, so you might want to check that
 
cursor properties are API | Fast_Forward | Read Only | Global (0)
 
If the fast-forward cursor typically does not pick dynamic at run time, you could change the type of cursor to something parallel-compatible like static or keyset.
Though since it is an API cursor, you may not have that option.
 
and since the cursor stuff is generated from the application kernel not under our control I need to hope that's changed in a new build
 
2:29 PM
Right. But the app developers may not be aware of the issue. If indeed it is an issue.
 
@PaulWhite although i'm not sure i understand "ast-forward cursor typically does not pick dynamic at run time"
if you state fast forward do not support parallelism
how could I have a fast forward using static..?
 
@TomV Read this
TL;DR when you specify FAST_FORWARD, the optimizer picks static or dynamic for you.
Broadly speaking.
So if the FF cursor typically chooses static, you could change it to static and possibly get a parallel plan.
Dollars to doughnuts the developers picked FF for no other reason than they read something that said that was the 'best' type.
Though I could be doing them a disservice, and they did in fact explore all the options and implications in depth :)
 
I think that code hasn't changed much since SQL7.0 support
 
sounds like airline booking software
 
SQL Server 7.0 would be too modern for those guys
 
2:37 PM
true. how's it going, paul?
 
version++ changes a lot of that kernel code
@PaulWhite care to post that stuff as an answer? I'll accept that
 
@swasheck Good thanks. Cold.
@TomV Didn't realize it was a main site question...link?
 
@PaulWhite all the way down to 18C?
 
@swasheck Daytime maximum 10C tomorrow. Was 8C today.
 
in fairness, i saw some kiwis posting on something somewhere and they said that it snowed
 
2:39 PM
2
Q: sp_cursoropen and parallelism

Tom VI'm running into a performance problem with a query that I can't seem to get my head around. I pulled the query out of a cursor definition. This query takes seconds to execute SELECT A.JOBTYPE FROM PRODROUTEJOB A WHERE ((A.DATAAREAID=N'IW') AND ((A.CALCTIMEHOURS<>0) AND (A.JOBTYPE<>3))) AND EX...

 
@PaulWhite yowza! stay warm
 
@swasheck It often snows in NZ, just not always in the places it currently is :)
 
take heart ... it could be 8 Kelvin
@PaulWhite that's how i understood the commentary
 
True. Haven't seen a frost overnight yet.
@TomV Thanks. Will add an answer shortly.
@swasheck Locally, it snows once maybe every 30 years or so, and you might not even call that snow. More generally, more than one or two days per winter where we don't get into double digits centigrade is a shocker.
 
well bundle up
@TomV how is performance if you truncate the tables?
 
2:50 PM
0
A: sp_cursoropen and parallelism

Paul WhiteFAST_FORWARD cursors do not support parallelism. When you specify FAST_FORWARD, the optimizer chooses between STATIC and DYNAMIC for you. It is hard to tell from the plan graphics provided, but if the optimizer typically chooses a static-like plan for the FAST_FORWARD cursor, you could change t...

There ya go.
 
wtf. dynamic vs. static cursors.
 
Each is better in different circumstances.
As with so many SQL Server things, all options are right and wrong.
 
of course. it's just new information to learn
 
Hi everybody!
 
just about the time i think i'm getting a grip on things, someone throws a greased potato at me
 
3:01 PM
I was going more of a Dr. Nick vibe
 
3:31 PM
As a DBA, would you normally measure the rate of growth of a database?
For example, we had a dodgy script that grew a specific table by 2Gb/day when it should have grown a couple of Mb, but no one noticed for a year...
 
I do. Each quarter I provide a capacity planning report that gives the higher ups a view of where we are and rough projections based on past growth
 
Complaints per hour
That's the only measurement that matters :P
 
Well there are certainly complaints now I have 600Gb of redundant data ;)
 
But think of all the server and san resellers you're keeping in business
 
@KrisGruttemeyer do you get alerts if the database grows drastically outside of your estimates?
 
3:35 PM
@MarkSinkinson we use posh/wmi to pull volume space available and correlate that to data files (which we have in a central DBA management database) ... we pull data file sizes for all systems twice per day
 
@MarkSinkinson No, not yet. It's still a fairly manual process on my end. Need time to get it automated and hook in alerts. It's very much a "1000 foot view"
 
@billinkc I'm guessing you store that in a bigint :)
2
 
@PaulWhite float
 
Ha true. Never accuse @billinkc of being precise.
 
3:37 PM
@PaulWhite numeric(38,0)
 
@billinkc float's still bigger
varchar(max)
 
So it seems like it's relatively standard practice then :) Guess I'll have to query whether or not we do this
 
Yes it is normal in my experience.
 
@swasheck We can all agree that the best data type would be datetime2(7)
 
@billinkc money ...
 
3:38 PM
json is more flexible and modern.
 
@MarkSinkinson ssis crawler to pull data from environment
 
And the countdown clock to Aaron having an aneurysm would be measured with tinyint
 
@PaulWhite even if it only uses xml
@billinkc bit default 1
 
@swasheck Well it reuses some of the same superclasses in SQL Server, but json data is never xml.
 
no. i know. that's what i was trying to say. thanks for the elucidation
 
3:41 PM
Just making sure :)
 
Thoughts on a name for my presentation on Cardinality Estimation?
 
@Zane I suck at that type of things
 
@Zane need moar information. what're the nuts and bolts
 
4:11 PM
Talking about what it is. Where it fits into the order of operations. How satistics fit in and how the overall estimate ultimately affects the exectuion plan.
 
4:28 PM
As soon as I come up with a title I will be submitting my sessions.
 
just make it descriptive. i think that's fine. it doesnt have to be cute
"Cardinality Estimation's Role in Query Plan Generation"
@JamesLupolt ... did some messing around with dupe stats
here's what i've come up with so far
select
	stats_generation_number = row_number() over (partition by base.object_id, base.stat_cols, base.has_filter order by base.is_index desc),
	*
from (
		select
			o.object_id,
			s.stats_id,
			schema_name = sh.name,
			object_name = o.name,
			stat_name = s.name,
			is_index = case when i.name is null then 0 else 1 end,
			s.has_filter,
			s.filter_definition,
			stat_cols = stuff(
						(
							select ',' + index_col(db_name(db_id()) + '.' + quotename(sh.name) + '.' + quotename(o.name),sc.stats_id,sc.stats_column_id)
 
@Zane What the Vatican doesn't want you to know about Query Plan Generation in 2014
 
@swasheck Thanks, I'll try to look later. Is this for exact duplicates only?
 
Lies, damned cardinality estimators, and query plans
 
@JamesLupolt duplicate column sets in different stats objects that exist on the same object ... unfortunately, filtered stats show up as dupes still ... but just thought of a way to partition them out
 
4:42 PM
"This talk is over your head but come listen anyways"
 
select
	stats_generation_number = row_number() over (partition by base.object_id, base.stat_cols, base.filter_definition order by base.is_index desc),
	*
from (
		select
			o.object_id,
			s.stats_id,
			schema_name = sh.name,
			object_name = o.name,
			stat_name = s.name,
			is_index = case when i.name is null then 0 else 1 end,
			s.has_filter,
			s.filter_definition,
			stat_cols = stuff(
						(
							select ',' + index_col(db_name(db_id()) + '.' + quotename(sh.name) + '.' + quotename(o.name),sc.stats_id,sc.stats_column_id)
 
4:57 PM
@billinkc Yeah always good to bring religion into it.
 
Those cardinals have been miss estimating things for some time now
I know, terrible stretch to get there
 
The Adventures of Miss Estimate and the Cardinal of Redmond
8
 
Now we're talking.
 
F that, we're done talking. Winner winner, chicken dinner
 
It's classy.
@billinkc I like this one as well.
Whenever I talk about cadinality estimation my co workers look at me like I'm a freak.
 
5:10 PM
@Zane you are, but having nothing to do with CE
 
5:23 PM
@AaronBertrand Are you sure about this one?
3
A: execution plan question

Aaron BertrandIt means that the parameter should be defined to match the data type of the underlying column - currently the parameter is nvarchar(4000) but it should be nvarchar(255). Whether this actually makes your query slow or leads to a bad plan is tougher to determine. But making those two definitions m...

I don't see a warning with different size nvarchar
The column is probably varchar
Same as here with a SQL collation
9
Q: SARG cardinality estimate, why not full-scan?

JānisWhy there is no full-scan (On SQL 2008 R2 and 2012)? Test data: DROP TABLE dbo.TestTable GO CREATE TABLE dbo.TestTable ( TestTableID INT IDENTITY PRIMARY KEY, VeryRandomText VarChar(50), VeryRandomText2 VarChar(50) ) Go Set NoCount ON Declare @i int Set @i = 0 While @i < 10000 Begin ...

@P0 nvarchar(4000) suggests some client lib he has no control over ORM or something like that.
Dig a bit deeper and perhaps it should go to SO as "How do I change the data type of my parameters".
 
@MikaelEriksson Those column names gave chills down my spine.
 
@Zane ORM in Swedish is snake. Chills down the spine is called for.
 
@MikaelEriksson no. that's what the implicit conversion tells you ... that it's a nvarchar(255).
the parameter was declared as nvarchar(4k)
how it affects plan generation would be a good test/demo case for @Zane "How I Met Your Query Plan" presentation
 
That show is overrated.\
 
@swasheck I can't recreate what he sees.
create table T
(
  C nvarchar(255) collate SQL_Latin1_General_CP1_CI_AS,
  OtherColumn char(100) default '',
  index IX_T (C)
)

go

insert into T(C)
select name
from sys.all_columns

go

declare @C nvarchar(4000) = N'bitpos'

select *
from T
where C = @C
Change data type of C to varchar(255) and you have a warning.
I might be missing something. Tested on SQL Server 2014.
 
5:37 PM
do you get the same warning?
 
Just the second row.
              <PlanAffectingConvert ConvertIssue="Seek Plan" Expression="CONVERT_IMPLICIT(nvarchar(255),[xx].[dbo].[T].[C],0)=CONVERT_IMPLICIT(nvarchar(4000),[@C],0)" />
 
your script fails for me
> index IX_T (C)
doesnt parse
 
Only on 2014.
Remove it and do
create index IX_T on T(C)
instead
 
gotcha
right
so ... nvarchar is a superset of varchar
 
Only for windows collations
 
5:40 PM
so it'd need to do an implicit conversion to go from nvarchar->varchar
where column is varchar and param is nvarchar
 
Implicit always goes the other way varchar - nvarchar
 
depends on the referent, right? :)
 
No, depends on the data type precedence
 
so are you suggesting that it converts the column values to nvarchar?
 
5:42 PM
interesting. ok. that's right
thinking through it, you're correct
lunch time ... i'll ponder
 
I think this explains it but... well maby a bit incoherent.
 
How do you grant a user the permission to access and search the database (basic crud stuff inside it), but only to that database in Postgres? Can you restrict it like that or is it impossible?
(I'm also having troubles connecting to the database unless my user is a superuser :( )
 
@ypercube Thank you! EXACTLY what I was looking for :D
I hope..
 
5:55 PM
Hmm, I'll have a look, but I think I'm too n00by to be messing with configuration files :S
Looks like the ultimate power tool :O
 
@Gemtastic nah, just dive in
that's how to learn
 
@Gemtastic yo should listen to @JackDouglas and just dive in. And you should start doing it in production, that's better ;-)
 
Yeah, but I'm just trying to wrap my head around how to get it to "grant all on database to user.
@Lamak Well, everything is "production" in a manner of speaking since I only have one computer, one postgres and I'm my own boss :P
 
hey, if you are your own boss then you should take the day off
 
I already did, it's after hours now ;D
 
6:00 PM
ah, clever, you can charge your boss extra hours
wait....
 
Hmm, do I have to grant on every table? It seems "GRANT ALL ON DATABASE database TO user;" Doesn't grant any access :S
(sorry for the n00bness but the only thing I could get to work with the access was making the user a superuser :/)
 
@MikaelEriksson sorry I wrote that answer up quickly on my phone on the train
 
@AaronBertrand No worries. I started to doubt myself there for a while.
 
@Gemtastic Read this answer: stackoverflow.com/questions/24918367/…
You probably want: GRANT ALL ON ALL TABLES IN SCHEMA public TO user_x;
(or to a different schema if your tables are not in the public schema.)
and you must do this while connected to the specific database as a superuser
(and also: GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO user_x; )
 
6:32 PM
@ypercube annoyingly (I think), this only grants access on all tables that currently exist
 
@JackDouglas Yes, i think you are right. They have to also add a DEFAULT PRIVILEGES for future objects
 
that would be very useful imo
 
Erwin's answer has an example for that, too
 
6:49 PM
Really having fun trying to fix an SSIS issue without having access to the Source....
 
7:23 PM
/Sight this is some pretty alarmist journalism right here.
 
@Zane i thought you were a dba
 
@swasheck Yeah knocking some old crud off my plate.
 
nope. it's the devs' problem now
 
Work order is still assigned to me.
3 people over the course of 5 years get this disease. That's less frequent that lighten strikes.
 
@Zane bah.
@MikaelEriksson sorry for doubting you earlier.
 
7:46 PM
Well you have met me so I don't blame you.
 
Someone at work just said to me if you aren't going to do math on a number than it's better to store ti as a string.....
 
@ypercube Thanks. This helped me a lot :) For some reason it's like the manual I'm reading and the parts you're linking me to are different manuals. :/
And thanks Jack :)
 
@MikaelEriksson the man in black
@Zane i'd agree for something like a zip code
 
@Gemtastic you're welcome :)
 
@Zane unless they are talking about phone numbers, when is someone not doing any math with a number?
 
7:56 PM
I love databases but it's a little bit to wrap the head around when you're new to the admin part ^^
 
@Gemtastic like a separate world
 
Indeed
I suddenly realized why the average wage for a DBA in sweden is on €4000 XD
/month
 
hmmmmmmmmmmmmmmmmmmmmmmmmmmm
 
Hmm?
 
@swasheck aI just ened that conversation. I could not follow what was being said there.
Gah now he's taking a meeting on Speaker phone!
 
8:06 PM
MADNESS!
 
SPARTA!!!!!!!!!
 
:D
Oh well, time to scuffer off to bed. Thanks everyone for the help and I hope to have the pleasure of speaking more to you some other day. :)
Or, erp.. with you.
 
both work. it's english. we have no rules.
 
8:47 PM
Gee Walley TeraData sure does blow.
 
@Zane blow up?
or like the Vertica BOOM?
 
like, "it's turrble"
you break this i'll break all that
 
9:08 PM
@ypercube as in sucks.
Every time I use it I'm incredibly dissapointed.
 
lower your expectations. it's like dating.
 
It's toolset is ugly and feels like it hasn't been updated since 97. It's expensive as hell. It's pretty quick but in order to achieve that speed it has to sit on a mountain of hardware.
 
So it's more like marriage then?
 
exactly
 
You know it's expensive when their website has no pricing information at all.
 
9:22 PM
wow. not that he ever had a chance, but there's now no way that jeb bush will even get a sniff of my vote
 
Work longer hours.
 
kiss my grits, mofo
 
@swasheck huh? What did he do now?
 
told us to work more hours --- that's how we're going to bail the wealthy elite (who already work fewer hours than i) out of this "rut"
 
Competition between Bush and Trump to see who can say the dumbest thing
(Trump, obviously)
 
9:27 PM
trump is saying the most offensive things. however, nobody really takes his candidacy seriously. jeb is alienating the only actual demographic that would give him a chance
 
who said vertica?
 
@Kermit I was talking about what a rip job TeraData is.
 
@Zane i agree
 
bahahahahahahahahaahahahahahahahahahahahah
 
^ as old as the internet
 
9:52 PM
that reminds me. we POCd vertica ... dollar-for-dollar sql server kicked its ass all around the data center
twice
 
That's because you didn't have a frog guiding you
 
yeah you were using it wrong
vertica = olap
sql server = oltp
 
hmm. ok. thumbsup
 
and what's a typical sql server box run in terms of cores? 20? how much is it per core? $6k? 20x6k= 120k for one server (license & no hardware)
vertica runs on commodity hardware
and vertica is licensed by storage
 
ok. so then the vendor is a weasel who was trying to get us to overspend on HW. meh. time to go home.
 
9:59 PM
@swasheck yeah that sounds about right
 

« first day (1647 days earlier)      last day (3225 days later) »