Subject: draft-crispin-imap-sort-00.txt

From: Mark Crispin <[email-masked]>
Date: Wed, 25 Feb 1998 22:26:53 -0800 (PST)

Network Working Group                                         M. Crispin
Internet Draft: IMAP SORT                       University of Washington
Document: internet-drafts/draft-crispin-imap-sort-00.txt   February 1998

           INTERNET MESSAGE ACCESS PROTOCOL - SORT EXTENSION

Status of this Memo

   This document is an Internet-Draft.  Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups.  Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   To learn the current status of any Internet-Draft, please check the
   "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
   Directories on ds.internic.net (US East Coast), nic.nordu.net
   (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
   Rim).

   A revised version of this draft document will be submitted to the RFC
   editor as an Informational RFC for the Internet Community.
   Discussion and suggestions for improvement are requested, and should
   be sent to [email-masked].  This document will expire before
   31 August 1998.  Distribution of this memo is unlimited.

Abstract

   This document describes the server-based sorting extension to the
   IMAP4rev1 protocol.  This extension provides substantial performance
   improvements for IMAP clients which offer sorted views.

Crispin                                                         [Page 1]

INTERNET DRAFT                 IMAP SORT                   November 1997

Additional Commands

   This command is an extension to the IMAP4rev1 base protocol.

   The section header is intended to correspond with where it would be
   located in the main document if it was part of the base
   specification.

6.3.SORT.       SORT Command

   Arguments:  sort program
               charset specification
               searching criteria (one or more)

   Data:       untagged responses: SORT

   Result:     OK - sort completed
               NO - sort error: can't sort that charset or
                    criteria
               BAD - command unknown or arguments invalid

      The SORT command is a variant of SEARCH with sorting semantics for
      the results.  Sort has two arguments before the searching criteria
      argument; a parenthesized list of sort criteria, and the searching
      charset.  Note that unlike SEARCH, the searching charset argument
      is mandatory.

      There is also a UID SORT command which corresponds to SORT the way
      that UID SEARCH corresponds to SEARCH.

      The SORT command first searches the mailbox for messages that
      match the given searching criteria using the charset argument for
      the interpretation of strings in the searching criteria.  It then
      returns the matching messages in an untagged SORT response, sorted
      according to one or more sort criteria.  Unlike SEARCH, if no
      messages match the searching criteria in a SORT command, no
      untagged SORT response is returned.

      When multiple sort criteria are specified, the result is sorted in
      the priority order that the criteria appear.  For example,
      (SUBJECT DATE) will sort messages in order by their subject text;
      and for messages with the same subject text will sort by their
      sent date.

Crispin                                                         [Page 2]

INTERNET DRAFT                 IMAP SORT                   November 1997

      The defined sort criteria are as follows.  Refer to the Formal
      Syntax section for the precise syntactic definitions of the
      arguments.

      ARRIVAL
         Internal date of the message.

      CC
         Mailbox part of the first "cc" address.

      DATE
         Sent date from the Date: header.

      FROM
         Mailbox part of the "From" address.

      REVERSE
         Followed by another sort criterion, has the effect of that
         criterion but in reverse order.

      SIZE
         Size of the message in octets.

      SUBJECT
         Subject text

      TO
         Mailbox part of the first "To" address.

   Example:    C: A282 SORT (SUBJECT) UTF-8 SINCE 1-Feb-1994
               S: * SORT 2 84 882
               S: A282 OK SORT completed
               C: A283 SORT (SUBJECT REVERSE DATE) UTF-8 ALL
               S: * SORT 5 3 4 1 2
               S: A283 OK SORT completed
               C: A284 SORT (SUBJECT) US-ASCII TEXT "not in mailbox"
               S: A284 OK SEARCH completed

Crispin                                                         [Page 3]

INTERNET DRAFT                 IMAP SORT                   November 1997

Additional Responses

   This response is an extension to the IMAP4rev1 base protocol.

   The section heading of this response is intended to correspond with
   where it would be located in the main document.

7.2.SORT.       SORT Response

   Data:       one or more numbers

      The SORT response occurs as a result of a SORT or UID SORT
      command.  The number(s) refer to those messages that match the
      search criteria.  For SORT, these are message sequence numbers;
      for UID SORT, these are unique identifiers.  Each number is
      delimited by a space.

   Example:    S: * SORT 2 3 6

Crispin                                                         [Page 4]

INTERNET DRAFT                 IMAP SORT                   November 1997

Formal Syntax of SORT commands and Responses

   sort_data       ::= "SORT" SPACE 1#nz_number

   sort            ::= ["UID" SPACE] "SORT" SPACE "(" 1#sort_criterion ")"
                       SPACE search_charset SPACE 1#search_key

   sort_criterion  ::= ["REVERSE" SPACE] sort_key

   sort_key        ::= "ARRIVAL" / "CC" / "DATE" / "FROM" / "SIZE" /
                       "SUBJECT" / "TO"

Security Considerations

   Security issues are not discussed in this memo.

Internationalization Considerations

   By default, strings are sorted according to the default locale.

   In the default locale, the 26 Latin alphabetics are sorted in a
   case-insensitive fashion; that is, "A" and "a" are treated as exact
   equals.  All other characters are sorted according to their octet
   values as expressed in UTF-8.

   Other locales, and the ability to change the locale, will be defined
   in a separate extension and document.  It is anticipated that there
   will be a generic Unicode locale which provides generic
   case-insensitivity for alphabetic scripts, as well as language-
   specific locales.  A server which implements non-default locales will
   modify its sorting behavior according to the locale.

Author's Address

   Mark R. Crispin
   Networks and Distributed Computing
   University of Washington
   4545 15th Aveneue NE
   Seattle, WA  98105-4527

   Phone: (206) 543-5762

   EMail: [email-masked]

Crispin                                                         [Page 5]

---

From: Patrik Faltstrom <[email-masked]>
Date: Thu, 26 Feb 1998 11:22:04 +0100 (MET)

>    modify its sorting behavior according to the locale.

One question I have on this (which would be clear if I was looking in the
search spec?) is regarding "equals". The UNICODE consortium has defined
what "equals" means in the UNICODE tables (see
ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData-Latest.txt, column 6). 

Is an I-D which defines this "equality" which is listed in the UNICODE
table what we are waiting for?

The second question have to do with order, and how to specify locale. Is
the locale specification something that the server is told by the client
in some other IMAP command I don't remember?

   Patrik