Hex Artifact Content
Not logged in

Artifact 1f591c1d8c59b922db85d32f24358cdee8e065bd:

Attachment "bugfix.patch" to ticket [3e58b8ceaf] added by anonymous 2010-11-26 04:29:43.
0000: 49 6e 64 65 78 3a 20 73 72 63 2f 74 69 6d 65 6c  Index: src/timel
0010: 69 6e 65 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ine.c.==========
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 73 72  =========.--- sr
0060: 63 2f 74 69 6d 65 6c 69 6e 65 2e 63 0a 2b 2b 2b  c/timeline.c.+++
0070: 20 73 72 63 2f 74 69 6d 65 6c 69 6e 65 2e 63 0a   src/timeline.c.
0080: 40 40 20 2d 39 35 39 2c 31 31 20 2b 39 35 39 2c  @@ -959,11 +959,
0090: 31 31 20 40 40 0a 20 0a 20 2f 2a 0a 20 2a 2a 20  11 @@. . /*. ** 
00a0: 54 68 65 20 69 6e 70 75 74 20 71 75 65 72 79 20  The input query 
00b0: 71 20 73 65 6c 65 63 74 73 20 76 61 72 69 6f 75  q selects variou
00c0: 73 20 72 65 63 6f 72 64 73 2e 20 20 50 72 69 6e  s records.  Prin
00d0: 74 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62  t a human-readab
00e0: 6c 65 0a 20 2a 2a 20 73 75 6d 6d 61 72 79 20 6f  le. ** summary o
00f0: 66 20 74 68 6f 73 65 20 72 65 63 6f 72 64 73 2e  f those records.
0100: 0a 20 2a 2a 0a 2d 2a 2a 20 4c 69 6d 69 74 20 74  . **.-** Limit t
0110: 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6e 74  he number of ent
0120: 72 69 65 73 20 70 72 69 6e 74 65 64 20 74 6f 20  ries printed to 
0130: 6e 4c 69 6e 65 2e 0a 2b 2a 2a 20 4c 69 6d 69 74  nLine..+** Limit
0140: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65   the number of e
0150: 6e 74 72 69 65 73 20 70 72 69 6e 74 65 64 20 74  ntries printed t
0160: 6f 20 6d 78 45 6e 74 72 69 65 73 2e 0a 20 2a 2a  o mxEntries.. **
0170: 20 0a 20 2a 2a 20 54 68 65 20 71 75 65 72 79 20   . ** The query 
0180: 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 74 68  should return th
0190: 65 73 65 20 63 6f 6c 75 6d 6e 73 3a 0a 20 2a 2a  ese columns:. **
01a0: 0a 20 2a 2a 20 20 20 20 30 2e 20 20 72 69 64 0a  . **    0.  rid.
01b0: 20 2a 2a 20 20 20 20 31 2e 20 20 75 75 69 64 0a   **    1.  uuid.
01c0: 40 40 20 2d 39 37 30 2c 32 32 20 2b 39 37 30 2c  @@ -970,22 +970,
01d0: 32 33 20 40 40 0a 20 2a 2a 20 20 20 20 32 2e 20  23 @@. **    2. 
01e0: 20 44 61 74 65 2f 54 69 6d 65 0a 20 2a 2a 20 20   Date/Time. **  
01f0: 20 20 33 2e 20 20 43 6f 6d 6d 65 6e 74 20 73 74    3.  Comment st
0200: 72 69 6e 67 20 61 6e 64 20 75 73 65 72 0a 20 2a  ring and user. *
0210: 2a 20 20 20 20 34 2e 20 20 4e 75 6d 62 65 72 20  *    4.  Number 
0220: 6f 66 20 6e 6f 6e 2d 6d 65 72 67 65 20 63 68 69  of non-merge chi
0230: 6c 64 72 65 6e 0a 20 2a 2a 20 20 20 20 35 2e 20  ldren. **    5. 
0240: 20 4e 75 6d 62 65 72 20 6f 66 20 70 61 72 65 6e   Number of paren
0250: 74 73 0a 20 2a 2f 0a 2d 76 6f 69 64 20 70 72 69  ts. */.-void pri
0260: 6e 74 5f 74 69 6d 65 6c 69 6e 65 28 53 74 6d 74  nt_timeline(Stmt
0270: 20 2a 71 2c 20 69 6e 74 20 6d 78 4c 69 6e 65 29   *q, int mxLine)
0280: 7b 0a 2b 76 6f 69 64 20 70 72 69 6e 74 5f 74 69  {.+void print_ti
0290: 6d 65 6c 69 6e 65 28 53 74 6d 74 20 2a 71 2c 20  meline(Stmt *q, 
02a0: 69 6e 74 20 6d 78 45 6e 74 72 69 65 73 29 7b 0a  int mxEntries){.
02b0: 20 20 20 69 6e 74 20 6e 4c 69 6e 65 20 3d 20 30     int nLine = 0
02c0: 3b 0a 2b 20 20 69 6e 74 20 6e 45 6e 74 72 69 65  ;.+  int nEntrie
02d0: 73 20 3d 20 30 3b 0a 20 20 20 63 68 61 72 20 7a  s = 0;.   char z
02e0: 50 72 65 76 44 61 74 65 5b 32 30 5d 3b 0a 20 20  PrevDate[20];.  
02f0: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 43 75   const char *zCu
0300: 72 72 65 6e 74 55 75 69 64 3d 30 3b 0a 20 20 20  rrentUuid=0;.   
0310: 7a 50 72 65 76 44 61 74 65 5b 30 5d 20 3d 20 30  zPrevDate[0] = 0
0320: 3b 0a 20 0a 20 20 20 69 66 28 20 67 2e 6c 6f 63  ;. .   if( g.loc
0330: 61 6c 4f 70 65 6e 20 29 7b 0a 20 20 20 20 20 69  alOpen ){.     i
0340: 6e 74 20 72 69 64 20 3d 20 64 62 5f 6c 67 65 74  nt rid = db_lget
0350: 5f 69 6e 74 28 22 63 68 65 63 6b 6f 75 74 22 2c  _int("checkout",
0360: 20 30 29 3b 0a 20 20 20 20 20 7a 43 75 72 72 65   0);.     zCurre
0370: 6e 74 55 75 69 64 20 3d 20 64 62 5f 74 65 78 74  ntUuid = db_text
0380: 28 30 2c 20 22 53 45 4c 45 43 54 20 75 75 69 64  (0, "SELECT uuid
0390: 20 46 52 4f 4d 20 62 6c 6f 62 20 57 48 45 52 45   FROM blob WHERE
03a0: 20 72 69 64 3d 25 64 22 2c 20 72 69 64 29 3b 0a   rid=%d", rid);.
03b0: 20 20 20 7d 0a 20 0a 2d 20 20 77 68 69 6c 65 28     }. .-  while(
03c0: 20 64 62 5f 73 74 65 70 28 71 29 3d 3d 53 51 4c   db_step(q)==SQL
03d0: 49 54 45 5f 52 4f 57 20 26 26 20 6e 4c 69 6e 65  ITE_ROW && nLine
03e0: 3c 3d 6d 78 4c 69 6e 65 20 29 7b 0a 2b 20 20 77  <=mxLine ){.+  w
03f0: 68 69 6c 65 28 20 64 62 5f 73 74 65 70 28 71 29  hile( db_step(q)
0400: 3d 3d 53 51 4c 49 54 45 5f 52 4f 57 20 26 26 20  ==SQLITE_ROW && 
0410: 6e 45 6e 74 72 69 65 73 3c 6d 78 45 6e 74 72 69  nEntries<mxEntri
0420: 65 73 20 29 7b 0a 20 20 20 20 20 69 6e 74 20 72  es ){.     int r
0430: 69 64 20 3d 20 64 62 5f 63 6f 6c 75 6d 6e 5f 69  id = db_column_i
0440: 6e 74 28 71 2c 20 30 29 3b 0a 20 20 20 20 20 63  nt(q, 0);.     c
0450: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 49 64 20 3d  onst char *zId =
0460: 20 64 62 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28   db_column_text(
0470: 71 2c 20 31 29 3b 0a 20 20 20 20 20 63 6f 6e 73  q, 1);.     cons
0480: 74 20 63 68 61 72 20 2a 7a 44 61 74 65 20 3d 20  t char *zDate = 
0490: 64 62 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 71  db_column_text(q
04a0: 2c 20 32 29 3b 0a 20 20 20 20 20 63 6f 6e 73 74  , 2);.     const
04b0: 20 63 68 61 72 20 2a 7a 43 6f 6d 20 3d 20 64 62   char *zCom = db
04c0: 5f 63 6f 6c 75 6d 6e 5f 74 65 78 74 28 71 2c 20  _column_text(q, 
04d0: 33 29 3b 0a 20 20 20 20 20 69 6e 74 20 6e 43 68  3);.     int nCh
04e0: 69 6c 64 20 3d 20 64 62 5f 63 6f 6c 75 6d 6e 5f  ild = db_column_
04f0: 69 6e 74 28 71 2c 20 34 29 3b 0a 40 40 20 2d 31  int(q, 4);.@@ -1
0500: 30 32 32 2c 31 30 20 2b 31 30 32 33 2c 31 32 20  022,10 +1023,12 
0510: 40 40 0a 20 20 20 20 20 20 20 73 71 6c 69 74 65  @@.       sqlite
0520: 33 5f 73 6e 70 72 69 6e 74 66 28 73 69 7a 65 6f  3_snprintf(sizeo
0530: 66 28 7a 50 72 65 66 69 78 29 2d 6e 2c 20 26 7a  f(zPrefix)-n, &z
0540: 50 72 65 66 69 78 5b 6e 5d 2c 20 22 2a 43 55 52  Prefix[n], "*CUR
0550: 52 45 4e 54 2a 20 22 29 3b 0a 20 20 20 20 20 20  RENT* ");.      
0560: 20 6e 20 2b 3d 20 73 74 72 6c 65 6e 28 7a 50 72   n += strlen(zPr
0570: 65 66 69 78 29 3b 0a 20 20 20 20 20 7d 0a 20 20  efix);.     }.  
0580: 20 20 20 7a 46 72 65 65 20 3d 20 73 71 6c 69 74     zFree = sqlit
0590: 65 33 5f 6d 70 72 69 6e 74 66 28 22 5b 25 2e 31  e3_mprintf("[%.1
05a0: 30 73 5d 20 25 73 25 73 22 2c 20 7a 55 75 69 64  0s] %s%s", zUuid
05b0: 2c 20 7a 50 72 65 66 69 78 2c 20 7a 43 6f 6d 29  , zPrefix, zCom)
05c0: 3b 0a 20 20 20 20 20 6e 4c 69 6e 65 20 2b 3d 20  ;.     nLine += 
05d0: 63 6f 6d 6d 65 6e 74 5f 70 72 69 6e 74 28 7a 46  comment_print(zF
05e0: 72 65 65 2c 20 39 2c 20 37 39 29 3b 0a 2b 0a 2b  ree, 9, 79);.+.+
05f0: 20 20 20 20 6e 45 6e 74 72 69 65 73 2b 2b 3b 0a      nEntries++;.
0600: 20 20 20 20 20 73 71 6c 69 74 65 33 5f 66 72 65       sqlite3_fre
0610: 65 28 7a 46 72 65 65 29 3b 0a 20 20 20 7d 0a 20  e(zFree);.   }. 
0620: 7d 0a 20 0a 20 2f 2a 0a 0a                       }. . /*..