Hive
  1. Hive
  2. HIVE-2642

fix Hive-2566 and make union optimization more aggressive

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.9.0
    • Component/s: None
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      Hive-2566 did some optimizations to union, but cause some problems. And then got reverted. This is to get it back and fix the problems we saw, and also make union optimization more aggressive.

        Activity

        Hide
        Ashutosh Chauhan added a comment -

        This issue is closed now. It was released with the fix in 0.9.0. If there is a problem, please open a new jira and link this one with that.

        Show
        Ashutosh Chauhan added a comment - This issue is closed now. It was released with the fix in 0.9.0. If there is a problem, please open a new jira and link this one with that.
        Hide
        Hudson added a comment -

        Integrated in Hive-trunk-h0.21 #1164 (See https://builds.apache.org/job/Hive-trunk-h0.21/1164/)
        HIVE-2642 fix Hive-2566 and make union optimization more aggressive
        (Yongqiang He via namit)

        namit : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1221812
        Files :

        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java
        • /hive/trunk/ql/src/test/queries/clientpositive/union26.q
        • /hive/trunk/ql/src/test/results/clientpositive/auto_join27.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/input25.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/input26.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/join35.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/lineage1.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/load_dyn_part14.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/merge4.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/ppd_union_view.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/stats1.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union10.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union11.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union12.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union14.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union15.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union17.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union18.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union19.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union20.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union22.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union24.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union25.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union26.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union3.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union4.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union5.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union6.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union7.q.out
        Show
        Hudson added a comment - Integrated in Hive-trunk-h0.21 #1164 (See https://builds.apache.org/job/Hive-trunk-h0.21/1164/ ) HIVE-2642 fix Hive-2566 and make union optimization more aggressive (Yongqiang He via namit) namit : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1221812 Files : /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java /hive/trunk/ql/src/test/queries/clientpositive/union26.q /hive/trunk/ql/src/test/results/clientpositive/auto_join27.q.out /hive/trunk/ql/src/test/results/clientpositive/input25.q.out /hive/trunk/ql/src/test/results/clientpositive/input26.q.out /hive/trunk/ql/src/test/results/clientpositive/join35.q.out /hive/trunk/ql/src/test/results/clientpositive/lineage1.q.out /hive/trunk/ql/src/test/results/clientpositive/load_dyn_part14.q.out /hive/trunk/ql/src/test/results/clientpositive/merge4.q.out /hive/trunk/ql/src/test/results/clientpositive/ppd_union_view.q.out /hive/trunk/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out /hive/trunk/ql/src/test/results/clientpositive/stats1.q.out /hive/trunk/ql/src/test/results/clientpositive/union10.q.out /hive/trunk/ql/src/test/results/clientpositive/union11.q.out /hive/trunk/ql/src/test/results/clientpositive/union12.q.out /hive/trunk/ql/src/test/results/clientpositive/union14.q.out /hive/trunk/ql/src/test/results/clientpositive/union15.q.out /hive/trunk/ql/src/test/results/clientpositive/union17.q.out /hive/trunk/ql/src/test/results/clientpositive/union18.q.out /hive/trunk/ql/src/test/results/clientpositive/union19.q.out /hive/trunk/ql/src/test/results/clientpositive/union20.q.out /hive/trunk/ql/src/test/results/clientpositive/union22.q.out /hive/trunk/ql/src/test/results/clientpositive/union24.q.out /hive/trunk/ql/src/test/results/clientpositive/union25.q.out /hive/trunk/ql/src/test/results/clientpositive/union26.q.out /hive/trunk/ql/src/test/results/clientpositive/union3.q.out /hive/trunk/ql/src/test/results/clientpositive/union4.q.out /hive/trunk/ql/src/test/results/clientpositive/union5.q.out /hive/trunk/ql/src/test/results/clientpositive/union6.q.out /hive/trunk/ql/src/test/results/clientpositive/union7.q.out
        Hide
        Hudson added a comment -

        Integrated in Hive-trunk-h0.23.0 #42 (See https://builds.apache.org/job/Hive-trunk-h0.23.0/42/)
        HIVE-2642 fix Hive-2566 and make union optimization more aggressive
        (Yongqiang He via namit)

        namit : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1221812
        Files :

        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java
        • /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java
        • /hive/trunk/ql/src/test/queries/clientpositive/union26.q
        • /hive/trunk/ql/src/test/results/clientpositive/auto_join27.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/input25.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/input26.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/join35.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/lineage1.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/load_dyn_part14.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/merge4.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/ppd_union_view.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/stats1.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union10.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union11.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union12.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union14.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union15.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union17.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union18.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union19.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union20.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union22.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union24.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union25.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union26.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union3.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union4.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union5.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union6.q.out
        • /hive/trunk/ql/src/test/results/clientpositive/union7.q.out
        Show
        Hudson added a comment - Integrated in Hive-trunk-h0.23.0 #42 (See https://builds.apache.org/job/Hive-trunk-h0.23.0/42/ ) HIVE-2642 fix Hive-2566 and make union optimization more aggressive (Yongqiang He via namit) namit : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1221812 Files : /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java /hive/trunk/ql/src/test/queries/clientpositive/union26.q /hive/trunk/ql/src/test/results/clientpositive/auto_join27.q.out /hive/trunk/ql/src/test/results/clientpositive/input25.q.out /hive/trunk/ql/src/test/results/clientpositive/input26.q.out /hive/trunk/ql/src/test/results/clientpositive/join35.q.out /hive/trunk/ql/src/test/results/clientpositive/lineage1.q.out /hive/trunk/ql/src/test/results/clientpositive/load_dyn_part14.q.out /hive/trunk/ql/src/test/results/clientpositive/merge4.q.out /hive/trunk/ql/src/test/results/clientpositive/ppd_union_view.q.out /hive/trunk/ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out /hive/trunk/ql/src/test/results/clientpositive/stats1.q.out /hive/trunk/ql/src/test/results/clientpositive/union10.q.out /hive/trunk/ql/src/test/results/clientpositive/union11.q.out /hive/trunk/ql/src/test/results/clientpositive/union12.q.out /hive/trunk/ql/src/test/results/clientpositive/union14.q.out /hive/trunk/ql/src/test/results/clientpositive/union15.q.out /hive/trunk/ql/src/test/results/clientpositive/union17.q.out /hive/trunk/ql/src/test/results/clientpositive/union18.q.out /hive/trunk/ql/src/test/results/clientpositive/union19.q.out /hive/trunk/ql/src/test/results/clientpositive/union20.q.out /hive/trunk/ql/src/test/results/clientpositive/union22.q.out /hive/trunk/ql/src/test/results/clientpositive/union24.q.out /hive/trunk/ql/src/test/results/clientpositive/union25.q.out /hive/trunk/ql/src/test/results/clientpositive/union26.q.out /hive/trunk/ql/src/test/results/clientpositive/union3.q.out /hive/trunk/ql/src/test/results/clientpositive/union4.q.out /hive/trunk/ql/src/test/results/clientpositive/union5.q.out /hive/trunk/ql/src/test/results/clientpositive/union6.q.out /hive/trunk/ql/src/test/results/clientpositive/union7.q.out
        Hide
        Namit Jain added a comment -

        Committed. Thanks Yongqiang

        Show
        Namit Jain added a comment - Committed. Thanks Yongqiang
        Hide
        Phabricator added a comment -

        njain has commented on the revision "HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive".

        INLINE COMMENTS
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java:245 remove this comment

        REVISION DETAIL
        https://reviews.facebook.net/D735

        Show
        Phabricator added a comment - njain has commented on the revision " HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive". INLINE COMMENTS ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java:245 remove this comment REVISION DETAIL https://reviews.facebook.net/D735
        Hide
        Namit Jain added a comment -

        1 general comment about the new test union26.q –

        Reduce the test output, I mean, you dont need to load all 500 rows for this test.
        It makes the test output really difficult to review.

        Again, all the above 3 are not blockers - I am still reviewing, I will file a enhancement for all the follow-ups.

        Show
        Namit Jain added a comment - 1 general comment about the new test union26.q – Reduce the test output, I mean, you dont need to load all 500 rows for this test. It makes the test output really difficult to review. Again, all the above 3 are not blockers - I am still reviewing, I will file a enhancement for all the follow-ups.
        Hide
        Namit Jain added a comment -

        Look at union22.q.out.

        map-join followed by union, an extra stage is introduced.
        We dont hsve to optimize this - just wanted to make sure it is intentional.

        Show
        Namit Jain added a comment - Look at union22.q.out. map-join followed by union, an extra stage is introduced. We dont hsve to optimize this - just wanted to make sure it is intentional.
        Hide
        Phabricator added a comment -

        njain has commented on the revision "HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive".

        still reviewing

        INLINE COMMENTS
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java:105 can you add some comments here ?

        This is not really the top operators - this contains the list of intermediate tables also. This code is difficult to debug later on, so more comments would be helpful

        REVISION DETAIL
        https://reviews.facebook.net/D735

        Show
        Phabricator added a comment - njain has commented on the revision " HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive". still reviewing INLINE COMMENTS ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java:105 can you add some comments here ? This is not really the top operators - this contains the list of intermediate tables also. This code is difficult to debug later on, so more comments would be helpful REVISION DETAIL https://reviews.facebook.net/D735
        Hide
        Phabricator added a comment -

        heyongqiang requested code review of "HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive".
        Reviewers: JIRA

        fix Hive-2566 and make union optimization more aggressive

        Hive-2566 did some optimizations to union, but cause some problems. And then got reverted. This is to get it back and fix the problems we saw, and also make union optimization more aggressive.

        TEST PLAN
        EMPTY

        REVISION DETAIL
        https://reviews.facebook.net/D735

        AFFECTED FILES
        ql/src/test/results/clientpositive/merge4.q.out
        ql/src/test/results/clientpositive/auto_join27.q.out
        ql/src/test/results/clientpositive/union19.q.out
        ql/src/test/results/clientpositive/union4.q.out
        ql/src/test/results/clientpositive/union14.q.out
        ql/src/test/results/clientpositive/create_view.q.out
        ql/src/test/results/clientpositive/union5.q.out
        ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out
        ql/src/test/results/clientpositive/load_dyn_part14.q.out
        ql/src/test/results/clientpositive/union15.q.out
        ql/src/test/results/clientpositive/union24.q.out
        ql/src/test/results/clientpositive/union10.q.out
        ql/src/test/results/clientpositive/input25.q.out
        ql/src/test/results/clientpositive/union6.q.out
        ql/src/test/results/clientpositive/lineage1.q.out
        ql/src/test/results/clientpositive/union25.q.out
        ql/src/test/results/clientpositive/union11.q.out
        ql/src/test/results/clientpositive/join35.q.out
        ql/src/test/results/clientpositive/union20.q.out
        ql/src/test/results/clientpositive/input26.q.out
        ql/src/test/results/clientpositive/union7.q.out
        ql/src/test/results/clientpositive/union17.q.out
        ql/src/test/results/clientpositive/union26.q.out
        ql/src/test/results/clientpositive/union12.q.out
        ql/src/test/results/clientpositive/stats1.q.out
        ql/src/test/results/clientpositive/union18.q.out
        ql/src/test/results/clientpositive/union3.q.out
        ql/src/test/results/clientpositive/union22.q.out
        ql/src/test/results/clientpositive/ppd_union_view.q.out
        ql/src/test/queries/clientpositive/union25.q
        ql/src/test/queries/clientpositive/merge4.q
        ql/src/test/queries/clientpositive/union26.q
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java
        ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java

        MANAGE HERALD DIFFERENTIAL RULES
        https://reviews.facebook.net/herald/view/differential/

        WHY DID I GET THIS EMAIL?
        https://reviews.facebook.net/herald/transcript/1581/

        Tip: use the X-Herald-Rules header to filter Herald messages in your client.

        Show
        Phabricator added a comment - heyongqiang requested code review of " HIVE-2642 [jira] fix Hive-2566 and make union optimization more aggressive". Reviewers: JIRA fix Hive-2566 and make union optimization more aggressive Hive-2566 did some optimizations to union, but cause some problems. And then got reverted. This is to get it back and fix the problems we saw, and also make union optimization more aggressive. TEST PLAN EMPTY REVISION DETAIL https://reviews.facebook.net/D735 AFFECTED FILES ql/src/test/results/clientpositive/merge4.q.out ql/src/test/results/clientpositive/auto_join27.q.out ql/src/test/results/clientpositive/union19.q.out ql/src/test/results/clientpositive/union4.q.out ql/src/test/results/clientpositive/union14.q.out ql/src/test/results/clientpositive/create_view.q.out ql/src/test/results/clientpositive/union5.q.out ql/src/test/results/clientpositive/ql_rewrite_gbtoidx.q.out ql/src/test/results/clientpositive/load_dyn_part14.q.out ql/src/test/results/clientpositive/union15.q.out ql/src/test/results/clientpositive/union24.q.out ql/src/test/results/clientpositive/union10.q.out ql/src/test/results/clientpositive/input25.q.out ql/src/test/results/clientpositive/union6.q.out ql/src/test/results/clientpositive/lineage1.q.out ql/src/test/results/clientpositive/union25.q.out ql/src/test/results/clientpositive/union11.q.out ql/src/test/results/clientpositive/join35.q.out ql/src/test/results/clientpositive/union20.q.out ql/src/test/results/clientpositive/input26.q.out ql/src/test/results/clientpositive/union7.q.out ql/src/test/results/clientpositive/union17.q.out ql/src/test/results/clientpositive/union26.q.out ql/src/test/results/clientpositive/union12.q.out ql/src/test/results/clientpositive/stats1.q.out ql/src/test/results/clientpositive/union18.q.out ql/src/test/results/clientpositive/union3.q.out ql/src/test/results/clientpositive/union22.q.out ql/src/test/results/clientpositive/ppd_union_view.q.out ql/src/test/queries/clientpositive/union25.q ql/src/test/queries/clientpositive/merge4.q ql/src/test/queries/clientpositive/union26.q ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRProcContext.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRUnion1.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRTableScan1.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRRedSink3.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMRFileSink1.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/GenMapRedUtils.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcContext.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java MANAGE HERALD DIFFERENTIAL RULES https://reviews.facebook.net/herald/view/differential/ WHY DID I GET THIS EMAIL? https://reviews.facebook.net/herald/transcript/1581/ Tip: use the X-Herald-Rules header to filter Herald messages in your client.
        Show
        He Yongqiang added a comment - https://reviews.facebook.net/D735

          People

          • Assignee:
            He Yongqiang
            Reporter:
            He Yongqiang
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development