Advertisement
Guest User

Untitled

a guest
May 27th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. schema = context['schema'] #'_00000003'
  2. vStep = 100
  3. SqlQuery('''
  4. -- Создаем временный индекс
  5. do $$
  6. begin
  7. dblink(''CREATE INDEX CONCURRENTLY "iЛид-РегламентДокументСозданиеДатаNULL_Tmp"
  8. ON {schema}."Лид"
  9. USING btree
  10. ("Регламент", "@Документ")
  11. WHERE "СозданиеДата" IS NULL;'')
  12. end;
  13. $$;
  14. '''.format(schema = schema))
  15.  
  16. resTheme = SqlQuery('''
  17. WITH recursive Regs as (
  18. SELECT
  19. x."@Регламент" "Регламент",
  20. x."Раздел@"
  21. FROM {schema}."Регламент" x
  22. WHERE "Раздел" = vMainReg
  23. UNION ALL
  24. SELECT
  25. r."@Регламент" "Регламент",
  26. r."Раздел@"
  27. FROM Regs t
  28. INNER JOIN {schema}."Регламент" r
  29. ON t."Регламент" = r."Раздел")
  30. SELECT "Регламент"
  31. FROM Regs
  32. WHERE "Раздел@" IS NOT TRUE
  33. '''.format(schema = schema))
  34.  
  35. for rec in resTheme:
  36. vCurLead = 0
  37. while True:
  38. vNextLead = SqlQueryScalar('''
  39. SELECT max_id
  40. FROM dblink(''
  41. SET search_path TO "_00000003", public;
  42. WITH
  43. sel AS (
  44. SELECT
  45. l."@Документ"
  46. FROM "Лид" l
  47. WHERE
  48. l."Регламент" = {vTheme} AND
  49. l."@Документ" > {vCurLead} '' AND
  50. l."СозданиеДата" IS NULL
  51. ORDER BY l."Регламент", l."@Документ"
  52. LIMIT {vStep}
  53. ),
  54. upd AS (
  55. UPDATE "Лид" l
  56. SET
  57. "СозданиеДата" = date_trunc('' || ''''''day'''''' || '', l."ДатаСоздания")
  58. FROM sel d
  59. WHERE
  60. l."@Документ" = d."@Документ"
  61. RETURNING l."@Документ"
  62. )
  63. SELECT max("@Документ") max_id
  64. FROM upd;
  65. '') t ;
  66. '''.format(vTheme=vTheme, vCurLead=vCurLead, vStep=vStep))
  67. if vNextLead is Null:
  68. break
  69. vCurLead = vNextLead
  70. SqlQuery('''
  71. -- Удаление временного индекса
  72. do $$
  73. begin
  74. loop
  75. begin
  76. LOCK TABLE {schema}."Лид" IN ACCESS EXCLUSIVE MODE NOWAIT;
  77. DROP INDEX {schema}."iЛид-РегламентДокументСозданиеДатаNULL_Tmp";
  78. exception when lock_not_available then
  79. continue;
  80. end;
  81. exit;
  82. end loop;
  83. end;
  84. $$;
  85. ''').format(schema = schema))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement