explain.depesz.com

PostgreSQL's explain analyze made readable

Result: oBnm

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

Limit (cost=4,875,361,492,138,082,304.00..4,875,361,492,138,082,304.00 rows=100 width=738) (actual rows= loops=)

2.          

CTE mecars_all

3. 0.000 0.000 ↓ 0.0

Unique (cost=4,633,364,259,639,436,288.00..4,795,908,119,254,904,832.00 rows=2,600,701,753,847,495,680 width=661) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Sort (cost=4,633,364,259,639,436,288.00..4,639,866,014,024,054,784.00 rows=2,600,701,753,847,495,680 width=661) (actual rows= loops=)

  • Sort Key: combined_incidents.incident_url, ((timezone('US/Pacific'::text, (combined_incidents.created_at)::timestamp with time zone))::date), (initcap(((CASE WHEN ((combined_incidents.cached_specialty_status)::text = 'specialty-prep'::text) THEN 'specialty'::character varying WHEN ((combined_incidents.cached_specialty_status)::text = 'specialty-hiv'::text) THEN 'specialty'::character varying WHEN ((combined_incidents.cached_specialty_status)::text = 'facebook'::text) THEN 'core'::character varying ELSE combined_incidents.cached_specialty_status END))::text)), (unnest(combined_incidents.labels)), combined_incidents.reporter, combined_incidents.description, (split_part(split_part(combined_incidents.description, '['::text, 2), ']'::text, 1)), (split_part(split_part(combined_incidents.description, '['::text, 7), ']'::text, 1)), (split_part(split_part(combined_incidents.description, ':'::text, 10), 'If'::text, 1)), combined_incidents.status, (CASE WHEN (combined_incidents.facility_id = 1) THEN 'SF'::text WHEN (combined_incidents.facility_id = 2) THEN 'OC/Irvine'::text WHEN (combined_incidents.facility_id = 3) THEN 'LA/CC'::text ELSE 'SF'::text END), combined_incidents.identification_phase, combined_incidents.origin_phase, combined_incidents.delivery_id, combined_incidents.clinics, ((((intaker.first_name)::text || ' '::text) || (intaker.last_name)::text)), ((((biller.first_name)::text || ' '::text) || (biller.last_name)::text)), ((((data_check_rph.first_name)::text || ' '::text) || (data_check_rph.last_name)::text)), ((((order_checker.first_name)::text || ' '::text) || (order_checker.last_name)::text)), ((((filler.first_name)::text || ' '::text) || (filler.last_name)::text)), (((((deliveries.dispensed_medication_name)::text || ' (NDC: '::text) || (deliveries.ndc)::text) || ')'::text)), deliveries.dispensed_quantity, ((((product_check_rph.first_name)::text || ' '::text) || (product_check_rph.last_name)::text)), (timezone('US/Pacific'::text, (deliveries.delivered_at)::timestamp with time zone))
5. 0.000 0.000 ↓ 0.0

ProjectSet (cost=32,994,925,251,440.88..15,572,280,093,305,906.00 rows=2,600,701,753,847,495,680 width=661) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Merge Right Join (cost=32,994,925,251,440.88..618,245,008,682,806.25 rows=26,007,017,538,474,956 width=462) (actual rows= loops=)

  • Merge Cond: (((product_check_rph.id)::text) = ((analytics_events_2.properties ->> 'admin_user'::text)))
7. 0.000 0.000 ↓ 0.0

Sort (cost=24,913.71..25,266.34 rows=141,053 width=18) (actual rows= loops=)

  • Sort Key: ((product_check_rph.id)::text)
8. 0.000 0.000 ↓ 0.0

Seq Scan on users product_check_rph (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Materialize (cost=32,994,925,226,527.17..33,179,302,854,358.38 rows=36,875,525,566,241 width=480) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Sort (cost=32,994,925,226,527.17..33,087,114,040,442.77 rows=36,875,525,566,241 width=480) (actual rows= loops=)

  • Sort Key: ((analytics_events_2.properties ->> 'admin_user'::text))
11. 0.000 0.000 ↓ 0.0

Merge Right Join (cost=34,168,777,429.62..863,998,819,574.20 rows=36,875,525,566,241 width=480) (actual rows= loops=)

  • Merge Cond: (((filler.id)::text) = ((analytics_events_1.properties ->> 'admin_user'::text)))
12. 0.000 0.000 ↓ 0.0

Sort (cost=24,913.71..25,266.34 rows=141,053 width=18) (actual rows= loops=)

  • Sort Key: ((filler.id)::text)
13. 0.000 0.000 ↓ 0.0

Seq Scan on users filler (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Materialize (cost=34,168,752,515.91..34,430,182,797.91 rows=52,286,056,399 width=498) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Sort (cost=34,168,752,515.91..34,299,467,656.91 rows=52,286,056,399 width=498) (actual rows= loops=)

  • Sort Key: ((analytics_events_1.properties ->> 'admin_user'::text))
16. 0.000 0.000 ↓ 0.0

Merge Right Join (cost=93,720,962.36..1,270,344,336.38 rows=52,286,056,399 width=498) (actual rows= loops=)

  • Merge Cond: (((order_checker.id)::text) = ((analytics_events.properties ->> 'admin_user'::text)))
17. 0.000 0.000 ↓ 0.0

Sort (cost=24,913.71..25,266.34 rows=141,053 width=18) (actual rows= loops=)

  • Sort Key: ((order_checker.id)::text)
18. 0.000 0.000 ↓ 0.0

Seq Scan on users order_checker (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Materialize (cost=93,696,048.65..94,066,732.41 rows=74,136,752 width=516) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Sort (cost=93,696,048.65..93,881,390.53 rows=74,136,752 width=516) (actual rows= loops=)

  • Sort Key: ((analytics_events.properties ->> 'admin_user'::text))
21. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=65,104,614.08..66,774,004.99 rows=74,136,752 width=516) (actual rows= loops=)

  • Merge Cond: (((analytics_events_3.properties ->> 'admin_user'::text)) = ((shipper.id)::text))
22. 0.000 0.000 ↓ 0.0

Sort (cost=65,079,700.37..65,079,963.17 rows=105,119 width=548) (actual rows= loops=)

  • Sort Key: ((analytics_events_3.properties ->> 'admin_user'::text))
23. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=48,986,804.76..65,070,932.57 rows=105,119 width=548) (actual rows= loops=)

  • Hash Cond: (prescriptions.last_data_checking_pharmacist_id = data_check_rph.id)
24. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=48,972,192.07..65,056,043.93 rows=105,119 width=538) (actual rows= loops=)

  • Hash Cond: (deliveries.biller_user_id = biller.id)
25. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=48,957,579.37..65,041,155.29 rows=105,119 width=528) (actual rows= loops=)

  • Hash Cond: (analytics_events_3.resource_id = deliveries.id)
26. 0.000 0.000 ↓ 0.0

Foreign Scan on analytics_events analytics_events_3 (cost=1,100.00..16,077,859.25 rows=1,537,460 width=252) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Hash (cost=48,956,013.67..48,956,013.67 rows=37,256 width=500) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=32,973,874.13..48,956,013.67 rows=37,256 width=500) (actual rows= loops=)

  • Hash Cond: (analytics_events_2.resource_id = deliveries.id)
29. 0.000 0.000 ↓ 0.0

Foreign Scan on analytics_events analytics_events_2 (cost=1,100.00..15,980,154.77 rows=723,256 width=252) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=32,972,423.27..32,972,423.27 rows=28,069 width=468) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=16,996,271.06..32,972,423.27 rows=28,069 width=468) (actual rows= loops=)

  • Hash Cond: (analytics_events.resource_id = deliveries.id)
32. 0.000 0.000 ↓ 0.0

Foreign Scan on analytics_events (cost=1,100.00..15,974,437.97 rows=675,616 width=252) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=16,994,888.09..16,994,888.09 rows=22,638 width=436) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=1,025,221.46..16,994,888.09 rows=22,638 width=436) (actual rows= loops=)

  • Hash Cond: (analytics_events_1.resource_id = deliveries.id)
35. 0.000 0.000 ↓ 0.0

Foreign Scan on analytics_events analytics_events_1 (cost=1,100.00..15,968,201.57 rows=623,646 width=252) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Hash (cost=1,023,874.21..1,023,874.21 rows=19,780 width=404) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=989,978.46..1,023,874.21 rows=19,780 width=404) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=989,978.04..1,013,790.37 rows=19,780 width=394) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=989,977.62..990,496.84 rows=19,780 width=390) (actual rows= loops=)

  • Hash Cond: (combined_incidents.delivery_id = deliveries.id)
40. 0.000 0.000 ↓ 0.0

Sort (cost=138,692.39..138,741.84 rows=19,780 width=877) (actual rows= loops=)

  • Sort Key: combined_incidents.id DESC
41.          

CTE incidents_with_labels

42. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=100,549.10..101,890.87 rows=19,878 width=960) (actual rows= loops=)

  • Group Key: i.id, ((((COALESCE(u.first_name, ''::character varying))::text || ' '::text) || (COALESCE(u.last_name, ''::character varying))::text)), d.facility_id, (((((d.dispensed_medication_name)::text || ' (NDC: '::text) || (d.ndc)::text) || ')'::text)), d.ndc, id.delivery_id
43. 0.000 0.000 ↓ 0.0

Sort (cost=100,549.10..100,598.80 rows=19,878 width=911) (actual rows= loops=)

  • Sort Key: i.id, ((((COALESCE(u.first_name, ''::character varying))::text || ' '::text) || (COALESCE(u.last_name, ''::character varying))::text)), d.facility_id, (((((d.dispensed_medication_name)::text || ' (NDC: '::text) || (d.ndc)::text) || ')'::text)), d.ndc, id.delivery_id
44. 0.000 0.000 ↓ 0.0

Gather (cost=17,976.89..99,129.92 rows=19,878 width=911) (actual rows= loops=)

  • Workers Planned: 1
45. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=16,976.89..96,039.81 rows=11,693 width=911) (actual rows= loops=)

  • Hash Cond: (i.admin_user_id = u.id)
46. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,364.20..81,250.26 rows=11,693 width=869) (actual rows= loops=)

  • Hash Cond: (cd.clinic_id = c.id)
47. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,747.52..80,602.88 rows=11,693 width=850) (actual rows= loops=)

  • Hash Cond: (p.clinics_doctor_id = cd.id)
48. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=719.31..79,543.98 rows=11,693 width=850) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=718.89..70,733.33 rows=11,693 width=850) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=718.46..2,933.82 rows=11,693 width=809) (actual rows= loops=)

  • Hash Cond: (i.id = id.incident_id)
51. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=145.23..1,957.10 rows=11,693 width=805) (actual rows= loops=)

  • Hash Cond: (i.id = ili.incident_id)
52. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on incidents i (cost=0.00..1,698.93 rows=11,693 width=773) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Hash (cost=91.59..91.59 rows=4,291 width=36) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1.58..91.59 rows=4,291 width=36) (actual rows= loops=)

  • Hash Cond: (ili.incident_label_id = il.id)
55. 0.000 0.000 ↓ 0.0

Seq Scan on incident_labels_incidents ili (cost=0.00..76.91 rows=4,291 width=8) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

Hash (cost=1.26..1.26 rows=26 width=36) (actual rows= loops=)

57. 0.000 0.000 ↓ 0.0

Seq Scan on incident_labels il (cost=0.00..1.26 rows=26 width=36) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Hash (cost=336.99..336.99 rows=18,899 width=8) (actual rows= loops=)

59. 0.000 0.000 ↓ 0.0

Seq Scan on incidents_deliveries id (cost=0.00..336.99 rows=18,899 width=8) (actual rows= loops=)

60. 0.000 0.000 ↓ 0.0

Index Scan using deliveries_pkey on deliveries d (cost=0.43..5.80 rows=1 width=45) (actual rows= loops=)

  • Index Cond: (id.delivery_id = id)
61. 0.000 0.000 ↓ 0.0

Index Scan using prescriptions_pkey on prescriptions p (cost=0.42..0.75 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (d.prescription_id = id)
62. 0.000 0.000 ↓ 0.0

Hash (cost=665.87..665.87 rows=28,987 width=8) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Seq Scan on clinics_doctors cd (cost=0.00..665.87 rows=28,987 width=8) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Hash (cost=455.19..455.19 rows=12,919 width=27) (actual rows= loops=)

65. 0.000 0.000 ↓ 0.0

Seq Scan on clinics c (cost=0.00..455.19 rows=12,919 width=27) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Hash (cost=12,849.53..12,849.53 rows=141,053 width=18) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Seq Scan on users u (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

68.          

CTE combined_incidents

69. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=33,599.97..34,646.07 rows=19,879 width=756) (actual rows= loops=)

  • Hash Cond: (reverse(split_part(reverse((i_1.external_url)::text), '/'::text, 1)) = (jira_issues.external_id)::text)
70. 0.000 0.000 ↓ 0.0

Hash Join (cost=14,612.69..15,062.43 rows=19,878 width=564) (actual rows= loops=)

  • Hash Cond: (i_1.user_id = users.id)
71. 0.000 0.000 ↓ 0.0

CTE Scan on incidents_with_labels i_1 (cost=0.00..397.56 rows=19,878 width=557) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Hash (cost=12,849.53..12,849.53 rows=141,053 width=11) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Seq Scan on users (cost=0.00..12,849.53 rows=141,053 width=11) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Hash (cost=18,921.10..18,921.10 rows=5,294 width=137) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Subquery Scan on jira_issues (cost=18,854.93..18,921.10 rows=5,294 width=137) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

Sort (cost=18,854.93..18,868.16 rows=5,294 width=501) (actual rows= loops=)

  • Sort Key: external_payloads_1.id DESC
77.          

CTE issues

78. 0.000 0.000 ↓ 0.0

Seq Scan on external_payloads (cost=0.00..12,465.52 rows=5,267 width=36) (actual rows= loops=)

  • Filter: (((source)::text = 'jira'::text) AND ((payload #> '{issue,fields,customfield_10500}'::text[]) <> 'null'::jsonb))
79.          

SubPlan (for Seq Scan)

80. 0.000 0.000 ↓ 0.0

Result (cost=0.00..2.27 rows=100 width=32) (actual rows= loops=)

81. 0.000 0.000 ↓ 0.0

ProjectSet (cost=0.00..0.52 rows=100 width=32) (actual rows= loops=)

82. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.01 rows=1 width=0) (actual rows= loops=)

83. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=542.91..6,061.97 rows=5,294 width=501) (actual rows= loops=)

  • Hash Cond: (issues.id = external_payloads_1.id)
84. 0.000 0.000 ↓ 0.0

CTE Scan on issues (cost=0.00..105.34 rows=5,267 width=36) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

Hash (cost=476.74..476.74 rows=5,294 width=237) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Seq Scan on external_payloads external_payloads_1 (cost=0.00..476.74 rows=5,294 width=237) (actual rows= loops=)

  • Filter: ((source)::text = 'jira'::text)
87.          

SubPlan (for Hash Right Join)

88. 0.000 0.000 ↓ 0.0

Function Scan on jsonb_array_elements_text (cost=0.01..1.00 rows=100 width=32) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

CTE Scan on combined_incidents (cost=0.00..743.98 rows=19,780 width=877) (actual rows= loops=)

  • Filter: ((status)::text <> 'invalid'::text)
90. 0.000 0.000 ↓ 0.0

Hash (cost=844,473.91..844,473.91 rows=544,905 width=62) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Subquery Scan on deliveries (cost=837,662.60..844,473.91 rows=544,905 width=62) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Sort (cost=837,662.60..839,024.86 rows=544,905 width=1,319) (actual rows= loops=)

  • Sort Key: d_1.delivered_at
93. 0.000 0.000 ↓ 0.0

Hash Join (cost=353,972.07..472,848.52 rows=544,905 width=1,319) (actual rows= loops=)

  • Hash Cond: (d_1.prescription_id = prescriptions_1.id)
94. 0.000 0.000 ↓ 0.0

Seq Scan on deliveries d_1 (cost=0.00..111,373.46 rows=547,717 width=62) (actual rows= loops=)

  • Filter: ((delivered_at IS NOT NULL) AND ((status)::text = 'delivered'::text))
95. 0.000 0.000 ↓ 0.0

Hash (cost=346,937.74..346,937.74 rows=562,746 width=4) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Subquery Scan on prescriptions_1 (cost=275,652.00..346,937.74 rows=562,746 width=4) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Gather Merge (cost=275,652.00..341,310.28 rows=562,746 width=1,220) (actual rows= loops=)

  • Workers Planned: 2
98. 0.000 0.000 ↓ 0.0

Sort (cost=274,651.97..275,355.41 rows=281,373 width=1,220) (actual rows= loops=)

  • Sort Key: p_1.created_at DESC
99. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on prescriptions p_1 (cost=0.00..99,153.73 rows=281,373 width=1,220) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Index Scan using prescriptions_pkey on prescriptions (cost=0.42..1.18 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (deliveries.prescription_id = id)
101. 0.000 0.000 ↓ 0.0

Index Scan using users_pkey on users intaker (cost=0.42..0.51 rows=1 width=18) (actual rows= loops=)

  • Index Cond: (id = prescriptions.intake_user_id)
102. 0.000 0.000 ↓ 0.0

Hash (cost=12,849.53..12,849.53 rows=141,053 width=18) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Seq Scan on users biller (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Hash (cost=12,849.53..12,849.53 rows=141,053 width=18) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Seq Scan on users data_check_rph (cost=0.00..12,849.53 rows=141,053 width=18) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Sort (cost=24,913.71..25,266.34 rows=141,053 width=4) (actual rows= loops=)

  • Sort Key: ((shipper.id)::text)
107. 0.000 0.000 ↓ 0.0

Seq Scan on users shipper (cost=0.00..12,849.53 rows=141,053 width=4) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Unique (cost=79,453,372,883,177,984.00..80,298,600,953,178,416.00 rows=12,714,796,944,304,236 width=738) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

Sort (cost=79,453,372,883,177,984.00..79,485,881,655,101,072.00 rows=13,003,508,769,237,478 width=738) (actual rows= loops=)

  • Sort Key: mecars_all.incident_url, mecars_all."Date Incident Reported", mecars_all."Pod", mecars_all."Reporter", mecars_all."Description", mecars_all."Risk", mecars_all."Severity", mecars_all."Error Type", mecars_all."Incident Status", mecars_all.dispensing_site, mecars_all."Identification Phase", mecars_all."Origin Phase", mecars_all."Delivery ID", mecars_all."Clinic", mecars_all."Intaker", mecars_all."Biller", mecars_all."Data Checker", mecars_all."Order Checker", mecars_all."Filler", mecars_all."Dispensed Medication", mecars_all."Dispensed Quantity", mecars_all."Product Checker", mecars_all."Date Delivered", (CASE mecars_all."Risk" WHEN 'low'::text THEN 'Low'::text WHEN 'Low'::text THEN 'Low'::text WHEN 'medium'::text THEN 'Medium'::text WHEN 'Medium'::text THEN 'Medium'::text WHEN 'high'::text THEN 'High'::text WHEN 'High'::text THEN 'High'::text ELSE 'none'::text END), (CASE mecars_all."Severity" WHEN 'low'::text THEN 'Low'::text WHEN 'Low'::text THEN 'Low'::text WHEN 'medium'::text THEN 'Medium'::text WHEN 'Medium'::text THEN 'Medium'::text WHEN 'high'::text THEN 'High'::text WHEN 'High'::text THEN 'High'::text ELSE 'none'::text END)
110. 0.000 0.000 ↓ 0.0

CTE Scan on mecars_all (cost=0.00..58,905,894,724,645,776.00 rows=13,003,508,769,237,478 width=738) (actual rows= loops=)

  • Filter: ((mecar_label)::text = 'MECAR'::text)