Changeset 51

Show
Ignore:
Timestamp:
02/02/07 20:21:44 (2 years ago)
Author:
jpelcis
Message:

* Tango support added.

  • Tango is now the default standard library.
  • -version=Phobos should be used for Phobos compatibility.
  • Ares support has been removed.
  • All import libraries now give a compile time message if the library name is unknown instead of asserting.
  • MysqlDatabase no longer throws a DBIException on conversion errors.
  • PostgreSQL import header updated from 8.1.4 to 8.2.1.
  • SQLite import header updated from 3.3.7 to 3.3.11.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/0.2-stable/buildme.d

    r41 r51  
    2929 * Authors: The D DBI project 
    3030 * 
    31  * Version: 0.2.4 
    32  * 
    33  * Modified: 
    34  *  2006-10-16  Changed build to bud. 
    35  *  2006-10-20  Fixed linux sleep issues. 
    36  *  2006-11-01  Non-Windows library names will now be in the proper style. 
    37  *  2003-11-09  Fixed a "no effect in expression" warning. 
     31 * Version: 0.2.5 
    3832 * 
    3933 * Copyright: BSD license 
     
    4135module buildme; 
    4236 
    43 version (Ares) { 
    44     private import std.io.FileConst : FileConst; 
    45     private import std.io.FilePath : FilePath; 
    46     private import std.c.stdlib : system; 
    47  
    48     alias FileConst.PathSeparatorString sep; 
    49 } else { 
     37version (Phobos) { 
    5038    private import std.file : chdir, getcwd, isdir, listdir; 
    5139    private import std.path : pardir, sep; 
    5240    private import std.process : system; 
     41} else { 
     42    private import tango.io.FileConst; 
     43    private import tango.io.FileProxy : FileProxy; 
     44    private import tango.stdc.stdlib : system; 
     45 
     46    alias FileConst.PathSeparatorString sep; 
    5347} 
    5448 
     
    7973            switchesCompiler["-odlibddbi.a"] = true; 
    8074        } 
    81         version (Ares) { 
    82             switchesCompiler["-version=Ares"] = true; 
     75        version (Phobos) { 
     76            switchesCompiler["-version=Phobos"] = true; 
    8377        } 
    8478    } else version (GNU) { 
     
    9791            switchesCompiler["-o libddbi.a"] = true; 
    9892        } 
    99         version (Ares) { 
    100             switchesCompiler["-fversion=Ares"] = true; 
     93        version (Phobos) { 
     94            switchesCompiler["-fversion=Phobos"] = true; 
    10195        } 
    10296    } else { 
     
    109103 
    110104    // Make the "all" list. 
    111     version (Ares) { 
    112         // Ares doesn't seem to have a listdir() equivalent. 
    113         allList["ib"] = true; 
    114         allList["msql"] = true; 
    115         allList["mysql"] = true; 
    116         allList["odbc"] = true; 
    117         allList["oracle"] = true; 
    118         allList["pg"] = true; 
    119         allList["sqlite"] = true; 
    120     } else { 
     105    version (Phobos) { 
    121106        chdir("dbi"); 
    122107        foreach (char[] dir; listdir(getcwd())) { 
     
    126111        } 
    127112        chdir(pardir); 
     113    } else { 
     114        void addDirs (char[] parent, char[] name, bool isDir) { 
     115            if (isDir && name != ".svn") { 
     116                allList[name] = true; 
     117            } 
     118    } 
     119        FileProxy proxy = new FileProxy("dbi"); 
     120        proxy.toList(&addDirs); 
    128121    } 
    129122 
     
    156149    } 
    157150    buildCommand.length = buildCommand.length - 1; 
    158     if (system("bud " ~ buildCommand)) { 
    159         version (Windows) { 
    160             system("pause"); 
    161         } else version (linux) { 
    162             system("sleep 5"); 
     151    version (Phobos) { 
     152        if (system("bud " ~ buildCommand)) { 
     153            version (Windows) { 
     154                system("pause"); 
     155            } else version (linux) { 
     156                system("sleep 5"); 
     157            } 
     158        } 
     159    } else { 
     160        if (system(("bud " ~ buildCommand).ptr)) { 
     161            version (Windows) { 
     162                system("pause"); 
     163            } else version (linux) { 
     164                system("sleep 5"); 
     165            } 
    163166        } 
    164167    } 
  • branches/0.2-stable/dbi/DBIException.d

    r45 r51  
    1 /** 
     1/** 
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
     
    88module dbi.DBIException; 
    99 
    10 version (Ares) { 
    11     private import std.vararg : va_arg; 
     10version (Phobos) { 
     11    private import std.stdarg : va_arg; 
    1212} else { 
    13     private import std.stdarg : va_arg; 
     13    private import tango.core.Vararg : va_arg; 
    1414} 
    1515private import dbi.ErrorCode; 
     
    3434     * Params: 
    3535     *  msg = The message to report to the users. 
    36      *  
     36     * 
    3737     * Throws: 
    3838     *  DBIException on invalid arguments. 
     
    6262                dbiCode = va_arg!(ErrorCode)(_argptr); 
    6363            } else { 
    64                 throw new DBIException("Invalid argument of type \"" ~ _arguments[i].toString() ~ "\" passed to the DBIException constructor."); 
     64                version (Phobos) { 
     65                    throw new DBIException("Invalid argument of type \"" ~ _arguments[i].toString() ~ "\" passed to the DBIException constructor."); 
     66                } else { 
     67                    throw new DBIException("Invalid argument of type \"" ~ _arguments[i].toUtf8() ~ "\" passed to the DBIException constructor."); 
     68                } 
    6569            } 
    6670        } 
     
    96100        return sql; 
    97101    } 
    98     deprecated alias getSql getSQL; 
    99      
     102 
    100103    private: 
    101104    char[] sql; 
  • branches/0.2-stable/dbi/Database.d

    r46 r51  
    1 /** 
     1/** 
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
     
    88module dbi.Database; 
    99 
    10 version (Ares) { 
    11     private static import std.regexp
    12     debug (UnitTest) private import std.io.Console
     10version (Phobos) { 
     11    private static import std.string
     12    debug (UnitTest) private static import std.stdio
    1313} else { 
    14     private static import std.string
    15     debug (UnitTest) private import std.stdio
     14    private static import tango.text.Util
     15    debug (UnitTest) private static import tango.io.Stdout
    1616} 
    1717private import dbi.DBIException, dbi.Result, dbi.Row, dbi.Statement; 
     
    7070     */ 
    7171    final Statement prepare (char[] sql) { 
    72         return new Statement(cast(Database)this, sql); 
    73     } 
    74  
    75   /* Escape a string using the database's native method if possible 
    76    * 
    77    * Params: 
    78    *  str = The string to escape 
    79    * 
    80    * Returns: 
    81    *  The escaped string. 
    82    */ 
    83  
    84   char[] escape (char[] str) 
    85   { 
    86     char[] result; 
    87     int count = 0; 
    88  
    89     // Maximum length needed if every char is to be quoted 
    90     result.length = str.length * 2; 
    91     for(int i = 0; i < str.length; i++) 
    92     { 
    93       switch(str[i]) 
    94       { 
    95         case '"': 
    96         case '\'': 
    97         case '\\': 
    98           result[count++] = '\\'; 
    99           break; 
    100         default: 
    101           break; 
    102       } 
    103       result[count++] = str[i]; 
    104     } 
    105  
    106     result.length = count; 
    107  
    108     return result; 
    109   } 
     72        return new Statement(this, sql); 
     73    } 
     74 
     75    /** 
     76     * Escape a _string using the database's native method, if possible. 
     77     * 
     78     * Params: 
     79     *  string = The _string to escape, 
     80     * 
     81     * Returns: 
     82     *  The escaped _string. 
     83     */ 
     84    char[] escape (char[] string) 
     85    { 
     86        char[] result; 
     87        size_t count = 0; 
     88 
     89        // Maximum length needed if every char is to be quoted 
     90        result.length = string.length * 2; 
     91 
     92        for (size_t i = 0; i < string.length; i++) { 
     93            switch (string[i]) { 
     94                case '"': 
     95                case '\'': 
     96                case '\\': 
     97                    result[count++] = '\\'; 
     98                    break; 
     99                default: 
     100                    break; 
     101            } 
     102            result[count++] = string[i]; 
     103        } 
     104 
     105        result.length = count; 
     106        return result; 
     107    } 
    110108 
    111109    /** 
     
    198196    final protected char[][char[]] getKeywords (char[] string) { 
    199197        char[][char[]] keywords; 
    200         version (Ares) { 
    201             foreach (char[] group; std.regexp.split(string, ";")) { 
    202                 if (group == "") { 
    203                     continue; 
    204                 } 
    205                 char[][] vals = std.regexp.split(group, "="); 
    206                 keywords[vals[0]] = vals[1]; 
    207             } 
    208         } else { 
     198        version (Phobos) { 
    209199            foreach (char[] group; std.string.split(string, ";")) { 
    210200                if (group == "") { 
     
    214204                keywords[vals[0]] = vals[1]; 
    215205            } 
     206        } else { 
     207            foreach (char[] group; tango.text.Util.delimit(string, ";")) { 
     208                if (group == "") { 
     209                    continue; 
     210                } 
     211                char[][] vals = tango.text.Util.delimit(group, "="); 
     212                keywords[vals[0]] = vals[1]; 
     213            } 
     214 
    216215        } 
    217216        return keywords; 
     
    226225    deprecated int getErrorCode () {return 0;} 
    227226    deprecated char[] getErrorMessage () {return "";} 
    228  
    229227} 
    230228 
    231229unittest { 
    232     version (Ares) { 
     230    version (Phobos) { 
    233231        void s1 (char[] s) { 
    234             Cout("" ~ s ~ "\n"); 
     232            std.stdio.writefln("%s", s); 
    235233        } 
    236234 
    237235        void s2 (char[] s) { 
    238             Cout("   ..." ~ s ~ "\n"); 
     236            std.stdio.writefln("   ...%s", s); 
    239237        } 
    240238    } else { 
    241239        void s1 (char[] s) { 
    242             writefln("%s", s); 
     240            tango.io.Stdout.Stdout(s).newline(); 
    243241        } 
    244242 
    245243        void s2 (char[] s) { 
    246             writefln("   ...%s", s); 
    247         } 
    248     } 
    249  
     244            tango.io.Stdout.Stdout("   ..." ~ s).newline(); 
     245        } 
     246    } 
    250247 
    251248    s1("dbi.Database:"); 
     
    254251    s2("getKeywords"); 
    255252    char[][char[]] keywords = db.getKeywords("dbname=hi;host=local;"); 
    256     assert(keywords["dbname"] == "hi"); 
    257     assert(keywords["host"] == "local"); 
    258 } 
     253    assert (keywords["dbname"] == "hi"); 
     254    assert (keywords["host"] == "local"); 
     255} 
  • branches/0.2-stable/dbi/ErrorCode.d

    r45 r51  
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
  • branches/0.2-stable/dbi/Result.d

    r45 r51  
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
  • branches/0.2-stable/dbi/Row.d

    r45 r51  
    1  
     1 
    22/** 
    33 * Authors: The D DBI project 
    44 * 
    5  * Version: 0.2.4 
     5 * Version: 0.2.5 
    66 * 
    77 * Copyright: BSD license 
     
    99module dbi.Row; 
    1010 
    11 version (Ares) { 
    12     debug (UnitTest) private import std.io.Console
     11version (Phobos) { 
     12    debug (UnitTest) private static import std.stdio
    1313} else { 
    14     debug (UnitTest) private import std.stdio
     14    debug (UnitTest) private static import tango.io.Stdout
    1515} 
    1616private import dbi.DBIException; 
     
    6262     *  --- 
    6363     * 
    64      * Returns:  
     64     * Returns: 
    6565     *  The field's contents. 
    6666     */ 
     
    156156     */ 
    157157    void addField (char[] name, char[] value, char[] decl, int type) { 
    158         fieldNames ~= name.dup
     158        fieldNames ~= name
    159159        fieldValues ~= value.dup; 
    160160        fieldDecls ~= decl.dup; 
     
    170170 
    171171unittest { 
    172     version (Ares) { 
     172    version (Phobos) { 
    173173        void s1 (char[] s) { 
    174             Cout("" ~ s ~ "\n"); 
     174            std.stdio.writefln("%s", s); 
    175175        } 
    176176 
    177177        void s2 (char[] s) { 
    178             Cout("   ..." ~ s ~ "\n"); 
     178            std.stdio.writefln("   ...%s", s); 
    179179        } 
    180180    } else { 
    181181        void s1 (char[] s) { 
    182             writefln("%s", s); 
     182            tango.io.Stdout.Stdout(s).newline(); 
    183183        } 
    184184 
    185185        void s2 (char[] s) { 
    186             writefln("   ...%s", s); 
     186            tango.io.Stdout.Stdout("   ..." ~ s).newline(); 
    187187        } 
    188188    } 
     
    190190    s1("dbi.Row:"); 
    191191    Row r1 = new Row(); 
    192     r1.addField("name", "John Doe", "text",    3); 
    193     r1.addField("age", "23",      "integer", 1); 
     192    r1.addField("name", "John Doe", "text", 3); 
     193    r1.addField("age", "23", "integer", 1); 
    194194 
    195195    s2("get(int)"); 
    196     assert(r1.get(0) == "John Doe"); 
     196    assert (r1.get(0) == "John Doe"); 
    197197 
    198198    s2("get(char[])"); 
    199     assert(r1.get("name") == "John Doe"); 
     199    assert (r1.get("name") == "John Doe"); 
    200200 
    201201    s2("[int]"); 
    202     assert(r1[0] == "John Doe"); 
     202    assert (r1[0] == "John Doe"); 
    203203 
    204204    s2("[char[]]"); 
    205     assert(r1["age"] == "23"); 
     205    assert (r1["age"] == "23"); 
    206206 
    207207    s2("getFieldIndex"); 
    208     assert(r1.getFieldIndex("name") == 0); 
     208    assert (r1.getFieldIndex("name") == 0); 
    209209 
    210210    s2("getFieldType"); 
    211     assert(r1.getFieldType(0) == 3); 
    212      
     211    assert (r1.getFieldType(0) == 3); 
     212 
    213213    s2("getFieldDecl"); 
    214     assert(r1.getFieldDecl(1) == "integer"); 
     214    assert (r1.getFieldDecl(1) == "integer"); 
    215215} 
  • branches/0.2-stable/dbi/Statement.d

    r46 r51  
    1 /** 
     1/** 
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
     
    88module dbi.Statement; 
    99 
    10 version (Ares) { 
    11     private static import std.regexp
    12     debug (UnitTest) private import std.io.Console
     10version (Phobos) { 
     11    private static import std.string
     12    debug (UnitTest) private static import std.stdio
    1313} else { 
    14     private static import std.string; 
    15     debug (UnitTest) private import std.stdio; 
     14    private static import tango.text.Util; 
     15    private static import tango.text.Regex; 
     16    debug (UnitTest) private static import tango.io.Stdout; 
    1617} 
    17 private import dbi.Database, dbi.Result; 
     18private import dbi.Database, dbi.DBIException, dbi.Result; 
    1819 
    1920/** 
     
    9899     *  The escaped form of string. 
    99100     */ 
    100     char[] escape (char[] string)  
    101   { 
    102     if(database !is null) 
    103       return database.escape(string); 
    104     else 
    105     { 
    106       char[] result; 
    107       int count = 0; 
    108  
    109       // Maximum length needed if every char is to be quoted 
    110       result.length = string.length * 2; 
    111       for(int i = 0; i < string.length; i++) 
    112       { 
    113         switch(string[i]) 
    114         { 
    115           case '"': 
    116           case '\'': 
    117           case '\\': 
    118             result[count++] = '\\'; 
    119             break; 
    120           default: 
    121             break; 
    122         } 
    123         result[count++] = string[i]; 
    124       } 
    125  
    126       result.length = count; 
    127       return result; 
    128     }  
     101    char[] escape (char[] string) { 
     102        if (database !is null) { 
     103            return database.escape(string); 
     104        } else { 
     105            char[] result; 
     106            size_t count = 0; 
     107 
     108            // Maximum length needed if every char is to be quoted 
     109            result.length = string.length * 2; 
     110 
     111            for (size_t i = 0; i < string.length; i++) { 
     112                switch (string[i]) { 
     113                    case '"': 
     114                    case '\'': 
     115                    case '\\': 
     116                        result[count++] = '\\'; 
     117                        break; 
     118                    default: 
     119                        break; 
     120                } 
     121                result[count++] = string[i]; 
     122            } 
     123 
     124            result.length = count; 
     125            return result; 
     126        } 
    129127    } 
    130128 
     
    138136     *  Raise an exception if binds.length != count(sql, "?") 
    139137     */ 
    140     char[] getSqlByQM ()  
    141   { 
    142         char[] result;  
    143     int i = 0, j = 0, count = 0; 
    144  
    145     // binds.length is for the '', only 1 because we replace the ? too 
    146     result.length = sql.length + binds.length;      
    147     for(i = 0; i < binds.length; i++) 
    148       result.length = result.length + binds[i].length; 
    149  
    150     for(i = 0; i < sql.length; i++) 
    151     { 
    152       if(sql[i] == '?') 
    153       { 
    154         result[j++] = '\''; 
    155         result[j..j + binds[count].length] = binds[count]; 
    156         j += binds[count++].length; 
    157         result[j++] = '\''; 
    158       } 
    159       else 
    160         result[j++] = sql[i]; 
    161     } 
    162  
    163     sql = result; 
     138    char[] getSqlByQM () { 
     139        char[] result; 
     140        size_t i = 0, j = 0, count = 0; 
     141 
     142        // binds.length is for the '', only 1 because we replace the ? too 
     143        result.length = sql.length + binds.length; 
     144        for (i = 0; i < binds.length; i++) { 
     145            result.length = result.length + binds[i].length; 
     146        } 
     147 
     148        for (i = 0; i < sql.length; i++) { 
     149            if (sql[i] == '?') { 
     150                result[j++] = '\''; 
     151                result[j .. j + binds[count].length] = binds[count]; 
     152                j += binds[count++].length; 
     153                result[j++] = '\''; 
     154            } 
     155            else { 
     156                result[j++] = sql[i]; 
     157            } 
     158        } 
     159 
     160        sql = result; 
    164161        return result; 
    165162    } 
     
    176173    char[] getSqlByFN () { 
    177174        char[] result = sql; 
    178         ptrdiff_t begIdx = 0, endIdx = 0; 
    179         version (Ares) { 
    180             while ((begIdx = std.regexp.find(result, ":")) != -1 && (endIdx = std.regexp.find(result[begIdx + 1 .. length], ":")) != -1) { 
    181                 result = result[0 .. begIdx] ~ "'" ~ getBoundValue(result[begIdx + 1.. begIdx + endIdx + 1])~ "'" ~ result[begIdx + endIdx + 2 .. length]; 
     175        version (Phobos) { 
     176           ptrdiff_t beginIndex = 0, endIndex = 0; 
     177            while ((beginIndex = std.string.find(result, ":")) != -1 && (endIndex = std.string.find(result[beginIndex + 1 .. length], ":")) != -1) { 
     178                result = result[0 .. beginIndex] ~ "'" ~ getBoundValue(result[beginIndex + 1.. beginIndex + endIndex + 1]) ~ "'" ~ result[beginIndex + endIndex + 2 .. length]; 
    182179            } 
    183180        } else { 
    184             while ((begIdx = std.string.find(result, ":")) != -1 && (endIdx = std.string.find(result[begIdx + 1 .. length], ":")) != -1) { 
    185                 result = result[0 .. begIdx] ~ "'" ~ getBoundValue(result[begIdx + 1.. begIdx + endIdx + 1])~ "'" ~ result[begIdx + endIdx + 2 .. length]; 
     181            uint beginIndex = 0, endIndex = 0; 
     182            while ((beginIndex = tango.text.Util.locate(result, ':')) != result.length && (endIndex = tango.text.Util.locate(result, ':', beginIndex + 1)) != result.length) { 
     183                result = result[0 .. beginIndex] ~ "'" ~ getBoundValue(result[beginIndex + 1 .. endIndex]) ~ "'" ~ result[endIndex + 1 .. length]; 
    186184            } 
    187185        } 
     
    196194     */ 
    197195    char[] getSql () { 
    198         version (Ares) { 
    199             if (std.regexp.find(sql, "\\u003F") != size_t.max) { 
    200                 return getSqlByQM(); 
    201             } else if (std.regexp.find(sql, ":") != size_t.max) { 
    202                 return getSqlByFN(); 
    203             } else { 
    204                 return sql; 
    205             } 
    206         } else { 
     196        version (Phobos) { 
    207197            if (std.string.find(sql, "?") != -1) { 
    208198                return getSqlByQM(); 
     
    212202                return sql; 
    213203            } 
     204        } else { 
     205            if (tango.text.Util.contains(sql, '?')) { 
     206                return getSqlByQM(); 
     207            } else if (tango.text.Util.contains(sql, ':')) { 
     208                return getSqlByFN(); 
     209            } else { 
     210                return sql; 
     211            } 
    214212        } 
    215213    } 
     
    223221     * Returns: 
    224222     *  The bound value of fn. 
     223     * 
     224     * Throws: 
     225     *  DBIException if fn is not bound 
    225226     */ 
    226227    char[] getBoundValue (char[] fn) { 
    227         for (ptrdiff_t idx = 0; idx < bindsFNs.length; idx++) { 
    228             if (bindsFNs[idx] == fn) { 
    229                 return binds[idx]; 
    230             } 
    231         } 
    232         return null
     228        for (size_t index = 0; index < bindsFNs.length; index++) { 
     229            if (bindsFNs[index] == fn) { 
     230                return binds[index]; 
     231            } 
     232        } 
     233        throw new DBIException(fn ~ " is not bound in the Statement.")
    233234    } 
    234235} 
    235236 
    236237unittest { 
    237     version (Ares) { 
     238    version (Phobos) { 
    238239        void s1 (char[] s) { 
    239             Cout("" ~ s ~ "\n"); 
     240            std.stdio.writefln("%s", s); 
    240241        } 
    241242 
    242243        void s2 (char[] s) { 
    243             Cout("   ..." ~ s ~ "\n"); 
     244            std.stdio.writefln("   ...%s", s); 
    244245        } 
    245246    } else { 
    246247        void s1 (char[] s) { 
    247             writefln("%s", s); 
     248            tango.io.Stdout.Stdout(s).newline(); 
    248249        } 
    249250 
    250251        void s2 (char[] s) { 
    251             writefln("   ...%s", s); 
     252            tango.io.Stdout.Stdout("   ..." ~ s).newline(); 
    252253        } 
    253254    } 
     
    258259 
    259260    s2("escape"); 
    260     assert(stmt.escape("John Mc'Donald") == "John Mc\\'Donald"); 
     261    assert (stmt.escape("John Mc'Donald") == "John Mc\\'Donald"); 
    261262 
    262263    s2("simple sql"); 
    263264    stmt = new Statement(null, "SELECT * FROM people"); 
    264     assert(stmt.getSql() == "SELECT * FROM people"); 
     265    assert (stmt.getSql() == "SELECT * FROM people"); 
    265266 
    266267    s2("bind by '?'"); 
     
    268269    stmt.bind(1, "10"); 
    269270    stmt.bind(2, "John Mc'Donald"); 
    270  
    271     assert(stmt.getSql() == resultingSql); 
     271    assert (stmt.getSql() == resultingSql); 
    272272 
    273273    /+ 
    274274    s2("bind by '?' sent to getSql via variable arguments"); 
    275275    stmt = new Statement("SELECT * FROM people WHERE id = ? OR name LIKE ?"); 
    276     assert(stmt.getSql("10", "John Mc'Donald") == resultingSql); 
     276    assert (stmt.getSql("10", "John Mc'Donald") == resultingSql); 
    277277    +/ 
    278278 
     
    281281    stmt.bind("id", "10"); 
    282282    stmt.bind("name", "John Mc'Donald"); 
    283     assert(stmt.getBoundValue("name") == "John Mc\\'Donald"); 
    284     assert(stmt.getSql() == resultingSql); 
     283    assert (stmt.getBoundValue("name") == "John Mc\\'Donald"); 
     284    assert (stmt.getSql() == resultingSql); 
    285285} 
  • branches/0.2-stable/dbi/all.d

    r45 r51  
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
  • branches/0.2-stable/dbi/ib/IbDatabase.d

    r45 r51  
    1 /** 
     1/** 
    22 * Authors: The D DBI project 
    33 * 
    4  * Version: 0.2.4 
     4 * Version: 0.2.5 
    55 * 
    66 * Copyright: BSD license 
     
    4040 
    4141    /** 
    42      *  
     42     * 
    4343     */ 
    4444    override void connect (char[] params, char[] username = null, char[] password = null) { 
     
    105105 
    106106    private: 
    107      
     107 
    108108} 
  • branches/0.2-stable/dbi/ib/IbResult.d

    <
    r45 r51  
    22 * Authors: The D DBI project