Jawa / Говнокод #6907 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
Query query = entityManager.createNativeQuery(
                        "select * from ("
                                + "select g4.id as goodId, g4.name as goodName, g4.code as goodCode, "
                                + "u4.name as uomName, sum(bgd.quantity_out) as quantityOut, "
                                + " g4.productcode as goodProductCode, sum(bgd.quantity_return) as quantityReturn "
                                + "from good g4 "
                                + "inner join consignment cs1 on cs1.good_id = g4.id "
                                + (customizationUtilSQL == null ? "" : customizationUtilSQL.buildCustomAttributesQueryInnerPart())
                                + " inner join "
                                + "(select gg.consignment_id, op.sourcestore_id as place_id, " +
                                		" sum(gg.quantity) as quantity_out, sum(coalesce(srset.return_quantity, 0)) as quantity_return "
                                + "from motion gg "
                                + "inner join operation op " +
                                		" on (gg.operation_id = op.id " +
                                		" and op.company = gg.company" +
                                        (projectId == null ? "" : " and (op.project_id  = :projectId) ") +
                                        (contractId == null ? "" : " and (op.contract_id  = :contractId) ") +
                                		") "
                                + "inner join place pld on op.sourcestore_id = pld.id "
                        		+ " left outer join "
                				+ " (select ds.demand_id as demand_id, srm.consignment_id as consignment_id, srm.sum as sum, " +
                						" sum(srm.quantity) as return_quantity from demand_salesreturn ds " +
                						" inner join operation sr on sr.id = ds.salesreturn_id " +
                						" inner join motion srm on srm.operation_id = sr.id " +
                						" where sr.dtype = 'SalesReturn' " +
                                        " and sr.deleted is null " +
                                        (!includeAboardOperations ? " and sr.applicable = true " : "") +
                                        " and (sr.moment between :upToDate and :toDate) " +
                                        " and " + SecurityUtil.companyFilterSQL("sr") +
                						" group by ds.demand_id, srm.consignment_id, srm.sum) srset " +
                						" on (srset.demand_id = op.id and srset.sum = gg.sum " +
                						" and srset.consignment_id = gg.consignment_id) "
                                + (agentId == null ? "" :
                                    " left outer join requisite tr on op.targetagentrequisite_id = tr.id "
                                    + " left outer join requisite sr on op.sourceagentrequisite_id = sr.id "
                                    + " left outer join agent agt on tr.agent_id = agt.id "
                            		+ " left outer join agent ags on sr.agent_id = ags.id ")
                                + "where " + SecurityUtil.companyFilterSQL("op")
                                + " and op.deleted is null "
                                + (!includeAboardOperations ? " and op.applicable = true " : "")
                                + " and (op.moment between :upToDate and :toDate) "
                                + " and op.dtype = 'Demand' "
                                + (agentId == null ? ""
                                    : " and ((ags.path || ags.id) like ( "
                                        + "select distinct (a21.path || a21.id || '%') from agent a21  where a21.id = :agentId) or "

всё не влезло, вообще тут 65 строк. пожалуйста выскажите ваше мнение об этом коде. спасибо :)

Запостил: ab368 ab368, (Updated )

Комментарии (29) RSS

  • +"(agt.path || agt.id) like ( "
    + "select distinct (a22.path || a22.id || '%') from agent a22 where a22.id = :agentId)) ")
    + (storeId == null ? ""
    : " and (pld.path || pld.id) like ( "
    + "select distinct (p2.path || p2.id || '%') from "
    + "place p2 where p2.id = :storeId) ")
    + " group by gg.consignment_id, op.sourcestore_id) as bgd on cs1.id = bgd.consignment_id "
    + " left outer join uom u4 on g4.uom_id = u4.id "
    + " where 1 = 1 "
    + (goodId == null ? "" :
    " and (g4.path || g4.id) like (select distinct (g31.path || g31.id || '%') from good g31 where g31.id = :goodId) ")
    + (supplierId == null ? ""
    : " and (g4.supplier_id = :supplierId) ")
    + (customizationUtilSQL == null ? " "
    : customizationUtilSQL.buildCustomAttribut esQueryWherePart(false, true))
    + " group by g4.id, g4.name, g4.code, u4.name, g4.productcode "
    + " having (sum(bgd.quantity_out) - sum(bgd.quantity_return) > :underZero)"
    + ") fullquery "
    + sorting.toString())
    Ответить
  • это вот как раз то, что не влезло в основной пост 🙂
    Ответить
  • вот, товарищи, явный пример по теме http://govnokod.ru/6902#comment91509

    дохуища SQL-УГ, которого мы навидались до рвоты в разделе PHP
    не смешно и нет желания нырять в это с головой.
    Ответить
  • это кстати говоря не лабы, а продакшн-код одного полуизвестного отечественного стартапа.
    Ответить
  • надо ли говорить, но работает этот код естественно неправильно. и мне этот баг надо найти и исправить 🙂 вот такие вот они, эти ваши отечественные стартапы.
    Ответить
  • Еще бы модель БД в студию, там тоже есть на что посмотреть.
    UPD: капча не сработала, аднака =\
    Ответить
    • ШОК!!! Жук Мне Не срывает покровы с загадочной капчи! Узнать подробнее >>
      капча была запилена для того, чтобы больные мишустиазом не могли постить много подзалупного творожка в автоматическом режиме. соответственно, работает по принципу rate-limitera и не пропускает каменты, если юзер постит более чем N комментов/секунду. показ капчи подчиняется тому же принципу.
      и хватит об этом, ибо боян
      Ответить
  • 5 нормальная форма - соединения дожны быть тривиальны и связаны с потенциальными ключами
    темболее, сколько времени на анализаторе показывает выполнение этого запроса?
    Ответить
  • мне в DLE мускул запросы нравятся, как-то дали починить сайтик один, так там DLE генерил запрос типа SELECT blah,........... FROM `dle_post` WHERE `id` IN ( и тут 7 МЕГАБАЙТ!!!!!!!!! айдишников через запятую ), запрос отрабатывал от 45 секунд до 10 минут, как повезет...
    Ответить
  • ТKOYBKFTGZHFUXLODPUIOECDZXXKUAZDEZYVHOGGNXHXCOWUMRAEYCMMAZNLTNQVJSVGXEKZFIFGKNAKUMKHQZILLIVCOMEBFNEWJWOHPFYNFQXLUDILBZEGMLPKRTWYXHPBQZEGDFTCXQQXZDCIMMGRBYWRGRGVLCZWETXOMDVINBZRFPDKSVFMOQGGBQGMGLVTHCKRJJGJZHWLSDGQWHQSRYNKFNHBGOPFZQVBAPVIKDGHRMQTOBZSKDEVCSVQJIUPXLJOQISFSDXKRQXWYKCCQVCXUQKIXCZRKNQVSUGYODJCSIFSUQROKBNYSSPGRGJJSRSSNPCAUAXTAEWLNCKNHWSEFFKLGGJSHUEFNFVPFKDMGJHLZGOBQMWOPNLLIHTDWUPGMLEHXSZBRIPXEFAKDEYASBIEARGESGKCNBWBXTITKMGDLMEUXYTIQKEDOXSYWPNTVUTIKRYTWPXTATJYMEKKVTJRFUYLPDSQQNZZTDKAMDTUOCWZUIQEAUBVQTZVAGFPNZGTKKKGTUZPAVWKTRYLDJRQKCQGEKJURUCXCWCXMMHSIPPAAWZEWWFQGSIJFSNHPLXPOEVKPRPIWRIUDPBXXLEWKMUMQZFJJDTORDT
    Ответить
  • ж)T(S,I?R:NL!X(X!C.N.L:Y$A)V:I,K:K:MS$E"E:E!X(Q)U(N$R,H.F)G"O$M(G)N.O.Y:D(O,K(K$N!A"K!JK,Z$O!A,DCA"U)J.F"M.O M,M.L.O?H$H D?O:W,A Q"N"V:C?S R)A!B?F(X(X(E$OY:T(F:L?I.S,O:Y!F.P"I(R:J"K$C.W)K,CZ,G,F:WN$V:Z?R X?O,A?T(E.L$P R"Z?U A,S(U,UM"B:I?S)J,U"L"L$G?R?D?M,A$Y.X O.V!B,F$X.J)M:Z.M?D(L$NGG,R!V"X:G ST(L.O(U?W"V W:K D:U(X)M X Z.F N(O)L)S)M!V BX.V.C J(M)S.M,M"V,L?F(T?F)O K$T P,Z?Z:DEK,J)S)D?HH?K:C)M!P"E!N(A.X(W(Q:T(GE?CM Q:KC.D?C?C!M)B$W,W)D,H!O!K,Y.N,M:O?E?C?P T H?E:E.MM!L"Q?F?S:V K,U?R.C)C?I)M)F!G$C,B"G"D!V:M"B$S)E?A?TРBJURFKFQFILFCLUVKIDZLQNHAYDRSOTUHWJTZMDMZUZPIYOXEGFCJWLVIRHIBDSLGLIJVSRAHXJQJKWYWNBFIEAANDUEWKCSMIQYYULQCVKKSWGYVIBSYFFJKFZGPACLQMYPMYWASUMMEHYOQTFTAOAUHGBULLLQYOSQGETGVMTIPNROASXMFUSJIHHG
    Ответить
  • м,U$C F!A.EM$E,J:D,L:B"Z)G:W"D)T:M"S$Z)U?G"Z.S.Y,L(Q!Z:T!O!H!K:W?C$O.D$V!W"K)I.X:H.V)W!F,V)T!B G)V?G$Y"Z C(NP J(GP H EMK)U!R:G,W(RSKS?F"E!O"E:E!F:D,LY!F$Y$G!Q.D N.E:B,P?J)A)Z M,U:A:H$R!RV!O AF,Q!K)Z!F)A(O.LW,A(M(R)J)J(A.B"O,M S"WE?SL)U:Y$T$RVU QC(N.J(F!M.CL(J$M:V?PU$D U:M:H:Q.VH?D Y.F.G"Z"K V"TI?P"R.H!N!CM?G!X,F(I"U.U?O?T"F D:D Q"ZL)F(X)Z)M(X,G.R(M$X.XN"Z(D(E R,D(G,E(K)T(K"E(W,X,C)I:O(A)R"A(Y P$K(Q$V$L,X Q"U Y,T!L?I(O:G:Y?P?M(Z(ZN?K(U.P)L U:ZG(Z!X)WK.F F O(ZB Z$N O(Q"F!E,M U:I,T,HM,Z"X(R(G:V!T(F!X!C"A"Q:I!QF"D$G:V,C)YGU.N,R:BW"H:H.O.E?V Y:Z V!B$G$P"R!W.N"Y.I$Y)A$W.B)Y(H)A)N:T W"E)E"O"Q.E"S)F$H,Z:Y:N S$S!A)G?O Y(U,Q!A,C,E:A:B?O?C"L"M(G(G!Y E$U TC(A(R:D)Z,X(O?O!I?I)U)A IH$W?C C,H?E?Z?N.P!BT:H?O.H$A(Z(N?ZCS,X,P.HW(Y.S(E"H:K(A,L"D:T!X:GEL$G!R!E$Q)J.K,Z.X?A$O,J)P.W,B.U?GX:R?Q:Y(G V(L:Z.A:J(B E N B$L,D H"R H"I A.U?E!L(B:G:A.X$D"P$K)G?H K!G!I$Z D.D"U"Z,D:WRM(I?V)LZ(G,E?O X(I.U(N)E(Z,F!H"B)G,FU,H)UN?S$QJ)C$G!BH E:E!WY C.O,F"J!B:H.AP)X:Q.E!A(R Q)U?C(E?CG!T?J$M.V)J:E?J$A.FH(R!P,K,K!E.E Z$E)I?J)Z$I!Y?D,HНKOWVBIVHQVDCXQZAJECGUGIERBDKDCMIDUIONSZPECKABCVGANFBSXXNDVCLINZKHFKYYVTGGQMSVMGPBIKRQHJCHQAWZUXCYPQYIFNSDCQJRSAJDXVOZMCSUGOEJBQFKQHCCLTIKNBUNFOEJERYIRTGSRSBFJDRHGBLJSXYFGIRNMGEJECLRNYBFDZPRXUCTQVOXAPUXQWAXGDFGMBKNUIGAFBYZYIKBIQEXDPIHESXDILBTCFBPFJRPICAHBDOKGALQSGKGTY
    Ответить
  • Grzegorz Brzęczyszczykiewicz,
    Chrząszczyżewoszyce powiat Łękołody
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8