On Mar 1, 2015, at 5:33 PM, Richard Hipp <drh at sqlite.org> wrote: > On 3/1/15, Paolo Bolzoni <paolo.bolzoni.brown at gmail.com> wrote: >> Dear everyone, >> >> I find strange and confusing that bind indexes start from 1 (docs in >> [1]) and instead column indexes start from 0 (doc in [2]). Is there >> any technical reason or it is just an unlucky legacy? > > Seems like there was a reason for this, 11 years ago when it went in, > but I cannot now call that reason to mind right this moment. So lets > just call it unlucky legacy.
Every database I?ve every used starts SQL parameter indexes from 1. I?m not sure it is part of the SQL standard, but it is more or less the defacto standard of SQL APIs, and might be considered part of the SQL language. I assume column indexes start at 0 because of C. Column indexes are used within the context of the C language API, so it makes some sense to use C conventions. I know they?re very easy to confuse (I still do it myself), but I can kind of see why we ended up there, even if it isn?t a very strong reason. -j -- Jay A. Kreibich < J A Y @ K R E I B I.C H > "Intelligence is like underwear: it is important that you have it, but showing it to the wrong people has the tendency to make them feel uncomfortable." -- Angela Johnson