File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / malloc8.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    1: # 2007 April 25
    2: #
    3: # The author disclaims copyright to this source code.  In place of
    4: # a legal notice, here is a blessing:
    5: #
    6: #    May you do good and not evil.
    7: #    May you find forgiveness for yourself and forgive others.
    8: #    May you share freely, never taking more than you give.
    9: #
   10: #***********************************************************************
   11: # This file contains additional out-of-memory checks (see malloc.tcl)
   12: # added to expose a bug in out-of-memory handling for sqlite3_value_text()
   13: #
   14: # $Id: malloc8.test,v 1.1.1.1 2012/02/21 17:04:16 misho Exp $
   15: 
   16: set testdir [file dirname $argv0]
   17: source $testdir/tester.tcl
   18: source $testdir/malloc_common.tcl
   19: 
   20: # Only run these tests if memory debugging is turned on.
   21: #
   22: if {!$MEMDEBUG} {
   23:    puts "Skipping malloc8 tests: not compiled with -DSQLITE_MEMDEBUG..."
   24:    finish_test
   25:    return
   26: }
   27: 
   28: 
   29: # The setup is a database with UTF-16 encoding that contains a single
   30: # large string.  We will be running lots of queries against this 
   31: # database.  Because we will be extracting the string as UTF-8, there
   32: # is a type conversion that occurs and thus an opportunity for malloc()
   33: # to fail and for sqlite3_value_text() to return 0 even though
   34: # sqlite3_value_type() returns SQLITE_TEXT.
   35: #
   36: 
   37: do_malloc_test malloc8-1 -sqlprep {
   38:   PRAGMA encoding='UTF-16';
   39:   CREATE TABLE t1(a);
   40:   INSERT INTO t1 
   41:   VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   42: } -sqlbody {
   43:   SELECT lower(a), upper(a), quote(a), trim(a), trim('x',a) FROM t1;
   44: }
   45: do_malloc_test malloc8-2 -sqlprep {
   46:   PRAGMA encoding='UTF-16';
   47:   CREATE TABLE t1(a);
   48:   INSERT INTO t1 
   49:   VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   50: } -sqlbody {
   51:   SELECT replace(a,'x','y'), replace('x',a,'y'), replace('x','y',a)
   52:     FROM t1;
   53: }
   54: do_malloc_test malloc8-3 -sqlprep {
   55:   PRAGMA encoding='UTF-16';
   56:   CREATE TABLE t1(a);
   57:   INSERT INTO t1 
   58:   VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   59: } -sqlbody {
   60:   SELECT length(a), substr(a, 4, 4) FROM t1;
   61: }
   62: ifcapable datetime {
   63:   do_malloc_test malloc8-4 -sqlprep {
   64:     PRAGMA encoding='UTF-16';
   65:     CREATE TABLE t1(a);
   66:     INSERT INTO t1 
   67:     VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   68:   } -sqlbody {
   69:     SELECT julianday(a,a) FROM t1;
   70:   }
   71: }
   72: do_malloc_test malloc8-5 -sqlprep {
   73:   PRAGMA encoding='UTF-16';
   74:   CREATE TABLE t1(a);
   75:   INSERT INTO t1 
   76:   VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   77: } -sqlbody {
   78:   SELECT 1 FROM t1 WHERE a LIKE 'hello' ESCAPE NULL;
   79: }
   80: do_malloc_test malloc8-6 -sqlprep {
   81:   PRAGMA encoding='UTF-16';
   82:   CREATE TABLE t1(a);
   83:   INSERT INTO t1 
   84:   VALUES('0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ');
   85: } -sqlbody {
   86:   SELECT hex(randomblob(100));
   87: }
   88: 
   89: # Ensure that no file descriptors were leaked.
   90: do_test malloc-99.X {
   91:   catch {db close}
   92:   set sqlite_open_file_count
   93: } {0}
   94: 
   95: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>