-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 07/25/2010 07:08 AM, Tim Romano wrote: > Something that can be knocked out in a half-hour
Nothing gets banged out in half an hour with SQLite :-) Using a string reverse example: - - The code has to be hooked in various places - - The function has to deal with the various ways strings could be passed and returned, especially UTF8 vs UTF16 encoding - - The function has to make sense with things like combining diacritics and surrogate pairs - - The function has to deal with bad parameters (eg passed an integer, float or blob to reverse) - - The function has to deal with running out of memory - - Documentation has to be added in several different places including inside the code, "core functions" in syntax pages etc - - Various specifications have to be added as well as evidence marks in the code (for example look at Reading Data in http://www.sqlite.org/fileio.html and note the [H35010] and similar annotations and at the timelime for EV style annotations) - - The TCL test suite has to be updated, not just for correct behaviour but also verifying behaviour with all the bad inputs, running out of memory, invalid UTF8/16 etc - - The TH3 test suite has to be updated (C code generation based) and verify that it maintains 100% MC/DC test coverage - - If this function is present in other database engines then the SQL Logic Test suite has to be updated and outputs compared - - The changelog has to be updated The code then has to be maintained and tested for all future SQLite 3 releases and internal changes (eg if UTF32 was added, new/changing memory allocators). See http://ometer.com/features.html and especially the Linus Torvalds posts it links to. > Some application > runtime environments are "sandboxed" and do not give the developer the > freedom to call an external library, But eventually the SQLite library is used so there is some mechanism to call external libraries, although there may be restrictions. > or to add UDFs to their implementation of SQLite. This is a good example. If the layer sitting in front of SQLite doesn't expose create function then you can still do so. Load the SQLite DLL separately and use sqlite3_auto_extension to register a piece of code that is called back for each new connection that registers the UDF. > Of course I understand it is not the fault of the SQLite architects or its > author when a runtime environment restricts what can be done with SQLite. And it is really the authors of those environments that should be contacted about making their wrapping more complete and facilitating full usage of SQLite. And failing that you can still implement what you need in your host programming environment (eg a reverse function). Sure it may be a lot less efficient or more hassle, but you choose that environment :-) > I'm only asking that such environments be kept in mind as one of the > criteria when assigning a priority to a requested feature. You are probably not aware that the SQLite C API is designed specifically to be easily used by other development environments. It is an absolute joy to wrap. (Yes there a few minor quirks, but compared to some other APIs they are insignificant.) Roger -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxMcyoACgkQmOOfHg372QTr4gCg0Og8C3nin0Ffui+ngnuu5eJU CKYAni8PPX4YwIi3FV6B3WIMbMebnnvE =L6lP -----END PGP SIGNATURE----- _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users