I am one of the developers on a very small team and have just found the following query

I would love to hear your ideas for what you think was being attempted here!

SELECT ... FROM client WHERE CAST(ABS(SIN(clientId)) AS BIT) = 0

You are viewing a single thread.
View all comments
6 points

Well abs(sin(x)) is always going to return a value between 0 and 1, and I dunno how casting to bit works… if it rounds this might be used to consistently grab half the users. If CAST(anything except 0) as BIT —> 1, then this could be used to grab a very small subset of users? If their clientIds happen to be clientId%180 == 0

permalink
report
reply
5 points

You’re right in that any non-zero value casted to bit becomes 1, but that includes negative values, so I’m even more confused why you’d need ABS there…

permalink
report
parent
reply
2 points

Well then, to answer OP’s question about intent, I don’t have much of a clue, but here’s some Idea Ore that maybe someone can refine into a plausible explanation:

  • clientId basically has to be sequential or none of this makes sense
  • conceptually, I believe this statement is equivalent to clientId%180 == 0
  • i can’t fathom CAST(ABS(SIN())) being more efficient than modular division, so maybe the dev was trying to be clever, hated the hardcoded 180, or some other unknown going on
  • a sine wave goes -∿- so this is where it hits the x-axis
  • given that, there has to be some periodic or cyclical purpose, relating to the why/how of the clientId creation. For example, when the results of this are graphed with a created_at timestamp, it might give useful insights to growth (or something)
permalink
report
parent
reply
3 points

I forgot to mention this is in SQL Server, so SIN operates on radians. So I THINK this can only ever cast to a 0 when clientId is also 0

It certainly doesn’t for any of the 100,000 existing rows

permalink
report
parent
reply

SQL

!sql@programming.dev

Create post

Related Fediverse communities:

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

Community stats

  • 10

    Monthly active users

  • 25

    Posts

  • 80

    Comments