-
Список говнокодов пользователя bliznezz
Всего: 12
-
−46
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
/* где-то на 4м уровне подзапросов из подзапросов нашёл такое: */
(
SELECT 1 AS num , .... 120 строк логики на case/when/then ....
FROM tablea a
WHERE a.id = @id /* 70млн, есть индекс по id, не уникальный */
) AS tbl1
LEFT JOIN (
SELECT 1 AS num , еще чуть-чуть case/when/then
FROM tableb b
WHERE b.reference = @value /* 80млн, есть индекс но половина записей - пустые строки. */ ) AS tbl2
ON tbl1.num = tbl2.num
left join по константам.
bliznezz,
02 Ноября 2016
-
−160
- 1
- 2
- 3
- 4
- 5
- 6
select
case
when count(*) > 0 then '1'
else '0' end
as "T"
from sometable where searchcode = 'value'
EXISTS? не, не слышал
bliznezz,
10 Июля 2015
-
−177
- 1
- 2
- 3
- 4
- 5
select top 67 DT, ID, SMTYPE, MSGSUBJ, PRIORITY
from MES where ST = 'n'
union all
select top 33 DT, ID, SMTYPE, MSGSUBJ, PRIORITY
from MES where ST = 'e'
Не буду говорить что тут говнокод, но понять разработчика, зачем надо брать не более 67 записей с ST = 'n' и не более 33 с ST = 'e' не знаю, точнее именно в одном запросе вот так разделять и ограничивать.
Похоже это был такой составной select top 100.
bliznezz,
09 Декабря 2014
-
−865
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
select
'select'+
' ''update BigTable'+
' set SomeFlag=''''U'''','+
'ARCHIVE_ID=''''''+OPERATIVE_ID+'''''''+
' where ID='''''+ID+''''''+
' '''+
' from AnotherTable'+
' where OPERATIVE_ID='''+ARCHIVE_ID+''''+
' and SUMMA='+convert(varchar,AMOUNT)+''+
' and FILLING='''+COMMENT+''''
from BigTable
bliznezz,
21 Октября 2014
-
−122
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Select
min(convert(char(10), DatField, 102)) as DatField,
min('ConstantForMe') as type,
f1
From sometable
Where /*условия*/
Group By f1
Люблю я агрегаты,
Любовью к ним пылаю неземною.
Неявные форматы -
И что хотите делайте со мною!
Для вас это - ерунда,
Подумаешь convert!
Но вы возьмите дату,
Но текстового формата,
Десяток первых цифер,
Смешайте всё с константой,
И группируйте с ней.
Поймёте вы всем сердцем -
Какое это чудо,
Потом вам станет худо,
Но это уж потом.
bliznezz,
16 Сентября 2014
-
−167
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
insert into #rez
select ('<html>')
Union all
select ('<head>')
Union all
select ('<meta http-equiv="content-type" content="text/html; charset=Windows-1251">')
Union all
select ('<title> Report </title>')
Union all
select ('<style type="text/css">')
Union all
select ('.{font-family:Arial;font-size:7pt;}')
Union all
select ('#top{border-top-style:solid;border-width:1;}')
Union all
select ('.titl{font-size:15px;}')
Union all
select ('.title{background-color:rgb(240,240,240)}')
Union all
select ('.data{background-color:rgb(248,248,248)}')
Union all
select ('.nam{background-color:rgb(245,245,245)}')
Union all
select ('</style>')
union all
select ('</head>')
union all
select ('<body>')
UNION ALL
select '<P align=left><SPAN style="FONT-SIZE: 12pt">' + @var1 + '<br><br>'
union all
-- ... и еще килобайт 50 подобной фигни. местами с генерацией табличек, с помощью if/case подсвеченных ячеек.
Спорите FastCGI vs WSGI? Говорите "Логика отдельно, шаблончики отдельно", ORM? Ну-ну. добро пожаловать в Махровый ентепрайз.
bliznezz,
28 Мая 2014
-
−166
- 1
- 2
- 3
- 4
- 5
- 6
SELECT ...
FROM users_account
....
WHERE
(T.userid=@userid or (@userid=null and @account!=null))
and (T.account=@account or (@userid!=null and @account=null))
Есть табличка с юзерами и счетами на которых у юзеров есть игровая валюта.
Есть индекс по обоим этим полям (userid, account).
Каждый такой запрос сканирует весь индекс,а не делает по ней поиск, чем и грузит субд.
Но попытки оптимизировать запрос не увечались успехом,
т.к. я так и не понял что хотел сказать автор в своём условии where.
bliznezz,
05 Февраля 2014
-
−160
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
create procedure pwqgen @length int =3
as
/* pwqgen is a t-sql implementation of passwdqc's pwqgen password generator http://www.openwall.com/passwdqc/ */
/* inspired by https://github.com/iphoting/pwqgen.rb */
BEGIN
create table #separators (id int identity, s char(1))
insert into #separators
select "-" union select "_" union select "+" union select "=" union select "2" union select "3"
union select "4" union select "5" union select "6" union select "7" union select "8" union select "9"
declare @maxsep int, @s varchar(1)
select @maxsep=max(id) from #separators
declare @maxid int, @w varchar(30) , @pw varchar(31)
select @maxid=max(id) from words -- =4096
select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
-- capitalize 1st letter
if rand() > 0.5
select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w))
set @pw=@w
set @length = @length-1
while @length > 0
begin
select @s=s from #separators where id=convert(int,round(rand()*@maxsep,0) )
delete from #separators where s=@s
select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
-- capitalize 1st letter
if (rand() > 0.5 or @s is null)
select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w))
set @pw=@pw+@s+@w
set @length = @length -1
end
-- if no one number in @pw - append or replace last letter to random number
if PATINDEX('%[0-9]%', @pw ) > 0
begin
set @s=convert(char(1), 2+convert(int,round(rand()*7,0)) )
if len(@pw)<30 set @pw=@pw+@s
else set @pw=UPPER(RIGHT(@pw,1))+SUBSTRING(@pw,1,LEN(@pw)-1)+@s
end
drop table #separators
print @pw
END
-- требует существования таблички со словами
-- create table words (id int identity , w varchar(7))
-- 4 тыс слов взял отсюда: https://github.com/iphoting/pwqgen.rb/blob/develop/lib/pwqgen/wordlist.rb
паролегенератор на tsql.
при тестах понял что возможна ситуация, когда пароль не имеет ниодной цифры, что запрещено политикой.
наговнокодил кучу charindex-ов. впринципе то работало, но вспомнил этот сайт, условие переписал под patindex, но треш в ветке с условием if PATINDEX('%[0-9]%', @pw ) > 0 остался.
bliznezz,
19 Сентября 2013
-
−167
- 1
- 2
- 3
update sometable
set value2=convert(char(100), @int_variable+convert(int,value2))
where someconditions
В цикле колбасится, упростил для понимания.
Мне кажется эту штуку изначально проектировал человек, который работал с bash и sqlite, а потом оппа, и нет слабой типизации.
bliznezz,
28 Марта 2013
-
−117
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
MAXJOBS=20
for i in `seq 1 $MAXJOBS` ; do nice -n 19 gzip -c /dev/zero > /dev/null & done
while true
do
LA=`</proc/loadavg` && LA=${LA// */}
H=$(date +%M) && H=${H/0/}
G=`echo "(${MAXJOBS}/2)*(s(2*3.14159*${H}/60) +1 ) <= ${LA}" | bc -l`
test ${G} -lt 1 && for i in `seq 1 $MAXJOBS` ; do kill -SIGCONT %$i ; done || for i in `seq 1 $MAXJOBS` ; do kill -SIGSTOP %$i; done
sleep 1
done
Генерирует load average, и поддерживает её в форме синусоиды, с периодом в час.
на графике выглядит как-то так:
http://i.piccy.info/i7/108cbdd61801da0ed805ecf41ecbc9e3/4-47-114/35579895/localhost_load.png
bliznezz,
12 Октября 2012