This is an automated email from the ASF dual-hosted git repository.

ggal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-livy.git


The following commit(s) were added to refs/heads/master by this push:
     new e4c2676c [LIVY-970][SERVER] Ordering and pagination support in GET 
/statement (#389)
e4c2676c is described below

commit e4c2676c161edf585bf9bb543a9277aaf92283a5
Author: Asif Khatri <[email protected]>
AuthorDate: Tue Apr 11 17:44:33 2023 +0530

    [LIVY-970][SERVER] Ordering and pagination support in GET /statement (#389)
    
    ## What changes were proposed in this pull request?
    
    GET /sessions/id/statements returns a list of statements run in a session. 
However the ordering of the statements are older ones first. Livy could expose 
a parameter (something like orderBy=latest) that will order the list of 
statements as latest first.
    JIRA: https://issues.apache.org/jira/browse/LIVY-970
    
    ## How was this patch tested?
    
    Verified manually by creating interactive session and statements via REST 
API call in a local Yarn cluster.
---
 docs/rest-api.md                                    | 21 +++++++++++++++++++++
 .../interactive/InteractiveSessionServlet.scala     |  7 ++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/docs/rest-api.md b/docs/rest-api.md
index 342bd59a..903bb5b2 100644
--- a/docs/rest-api.md
+++ b/docs/rest-api.md
@@ -251,6 +251,27 @@ Gets the log lines from this session.
 
 Returns all the statements in a session.
 
+#### Request Parameters
+
+<table class="table">
+  <tr><th>Name</th><th>Description</th><th>Type</th></tr>
+  <tr>
+    <td>from</td>
+    <td>The start index to fetch sessions</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>size</td>
+    <td>Number of sessions to fetch</td>
+    <td>int</td>
+  </tr>
+  <tr>
+    <td>order</td>
+    <td>Provide value as "desc" to get statements in descending order (By 
default, the list is in ascending order)</td>
+    <td>string</td>
+  </tr>
+</table>
+
 #### Response Body
 
 <table class="table">
diff --git 
a/server/src/main/scala/org/apache/livy/server/interactive/InteractiveSessionServlet.scala
 
b/server/src/main/scala/org/apache/livy/server/interactive/InteractiveSessionServlet.scala
index 4440c775..85407b04 100644
--- 
a/server/src/main/scala/org/apache/livy/server/interactive/InteractiveSessionServlet.scala
+++ 
b/server/src/main/scala/org/apache/livy/server/interactive/InteractiveSessionServlet.scala
@@ -113,7 +113,12 @@ class InteractiveSessionServlet(
 
   get("/:id/statements") {
     withViewAccessSession { session =>
-      val statements = session.statements
+      val order = params.get("order")
+      val statements = if 
(order.map(_.trim).exists(_.equalsIgnoreCase("desc"))) {
+        session.statements.reverse
+      } else {
+        session.statements
+      }
       val from = params.get("from").map(_.toInt).getOrElse(0)
       val size = params.get("size").map(_.toInt).getOrElse(statements.length)
 

Reply via email to