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 }. . /*..