Hello Ryan,

Thanks for your response.   I was writing a lengthy reply when I realized
that most of what I said in it where repetitions of what I have already said
earlier, so I deleted it.

To be honest, its well possible that I currently just can't wrap my head
about the non-strict way SQLite seems to work (its not really what I'm
accustomed to)  ...

Regards,
Rudy Wieser


----- Original Message -----
From: RSmith <rsm...@rsweb.co.za>
To: General Discussion of SQLite Database <sqlite-users@sqlite.org>
Sent: Friday, July 11, 2014 2:24 AM
Subject: Re: [sqlite] Questions from a novice - basic browsing of records
ina listview.


>
> >
> >> What if the table has 10^16 or more items?
> > Is that number within the limits as set by SQLite3 ?  Than its my
intention
> > to handle it.
>
> No, I just made that up out of thin air. SQLite's maximum row limit is
2^63-1 I believe. It is unreachable on current physical media.
>
> > Oh, there are some there, like a SQLITE_MAX_SQL_LENGTH of (max) a gig,
and a SQLITE_MAX_COLUMN of (max) 32767. Together that would
> > mean a maximum column-name length of about 32768 chars//....
>
> No, it does not mean that at all. Your inference is not only wrong but
also unneeded, meaning that you are imagining relationships
> where there are none. The limits for max sql length and max column are
very clear, and in no way and by no virtue does it imply that
> the one informs the other. Why do you imagine that this is necessarily so?
>
> To be clear - when you go inside an elevator - you might see a weight
limit stated as "500Kg / 13 Persons". This does not mean the
> limit per person is 500/13=38Kg at all, and there is no reason in the
known universe to imagine that it does. (Good thing too cause
> I won't ever get to use the elevator). It does mean that even if you find
an array of 20Kg children, you still cannot pack more than
> 13 in there, and if you have 5 really big (100Kg+) people hopping on ahead
of you, best to wait for the next one. The limit
> statement is not fuzzy.
>
> > ...//Also, the above SQLITE_MAX_COLUMN can be changed at *compile* time.
What am I supposed to do with my regular API (max 2000
> > columns) when encountering a database made with such an altered API ?
Will it even cause troubles at all ? *That* is what I mean
> > with "vague or fuzzy".
>
> If this was true it would be reason for concern - but the limit you refer
to is a SQL language construct limit, not a table-width
> limit so the worry is not justified - but In a query one might be able to
dream up a set of extracted columns that tops the query
> limit easily even if the underlying tables only sports a few columns. For
this you will need to plan. The paradigm here is to cater
> for what is relevant. Very few people make queries longer than a few
columns, but they might. It's a kind of bell curve, and if the
> users are those lying at the 6th+ standard deviation of column-count
requirements, chances are they will have compiled their own
> sqlite version by now, and if they did not, ask them politely to adhere to
whichever limit you picked. There is no SQLite-imposed
> hard limit (other than the physical), in stead, it supports the wide gamut
of needs that cover the 99% bulk, and people with special
> needs roll their own (using the various compiler directives and the like).
>
> You don't even need to check this, SQLite will do it for you. Send a query
with 101 columns, it will return a
> DUDE_THATS_TOO_MANY_COLUMNS result in stead, the (real) codes being
available in the documentation. But if you like there is nothing
> wrong with setting your own maximum columns and doing your own checking,
but the ability doesn't mean SQLite is soft in the head -
> just that it isn't restrictive and you have some freedom of design.
>
> >> most all of them can be adjusted to suit folks like yourself
> >> who wish to push the limits.
> > I'm afraid you misunderstood. Its not my intention to push those limits,
but
> > I'll be damned if I let my intended basic database-browser refuse to
display
> > a legal table because *I* could not find a way to handle it.
>
> Not misunderstood, just a bit tongue-in-cheek, but the nuance probably
misplaced, I apologise.
>
> > Maybe in the end I still have to conceede defeat and use a few arbitrary
> > limits, taking the risk the program cannot handle every table. But not
> > before I tried my d*mn best not to do let that happen. :-)
>
> There is no such risk. SQLite will open each and every valid table in
existence, and you can query it so long as the query itself
> conforms. In this regard you are quite justified to fear a table with 200
columns and you have a 99 col query limit, so you wont be
> able to ask for every column by name, though * will still work.  One might
say that 99 columns is more than any user might want to
> or be able to really look at... but if you disagree (and even I disagree,
I think probably 200 is closer to a sensible human limit),
> then you might simply decide what it is that you feel would be the most
anyone can useful observe in a query, say 500 if you like,
> or 1000, and make that your limit. And then, if ever a query needs more
than those, split it into 2 queries. SQL DBA's are not as
> dumb as you might think, they are very used to working within limits. (Or
maybe your intended user is of a different mindset, but
> that is up to you to figure out).
>
>
> > Well, I wanted to start with browsing. Adding selections to limit the
output (possibly also hiding interresting entries!) could
> > come later. The idea behind that is that while browsing you might find
stuff that looks interresting, something that could easily
> > get hidden when limiting the output (using a LIKE clause)
>
> Ok, I'm not sure I agree with this one, but definitely willing to give the
benefit of the doubt. The solution is again something
> like: You need to decide what would be a sensible limit and go with that.
SQLite will supply any and all records you ask for, it has
> no thoughts on limits in this regard (other than the 64-bit rowid upper
bound I mentioned earlier, but as I also mentioned, no HDD
> in existence has near that many bits on it, never-mind possible data
slots, so reaching that limit simply won't happen and catering
> for it requires a special breed of star-trek fan).
>
> >> It's ~2 giga-characters for a Unicode-enabled string.
> >> Anyone who makes column names that long has issues
> >> that can only be solved by a medical doctor, not an
> >> SQL engine.
> > Agreed.  But it *is* possible, so a generic browser should be able to
handle
> > it (why did you think I was asking if there was a short-hand for
colum-names
> > is available).
>
> Again, apologies for the nuance - I wrongly assumed the statement was
implicit. Yes an absurdly long column name is possible (if not
> plausible), but how is this a problem? SQLite will handle it, it will
report it and will correctly retrieve data for it. As long as
> you can hold it in memory in your app and display it to your user. Also,
again, feel free to limit the viewable size of a column
> name for making the app easier to use (but do not limit the length SQLite
can report to your app, obviously), either way SQLite
> doesn't care, that is your decision. Internally by the way, SQLite stores
it as a hash (other than in the schema), so it really
> doesn't care. As long as your maximum query length fits inside the length
specified (or which you specified), all is well.
>
>
> > Is anyone bound to stay within those "actual usage conventions" ? If not
than its meaningless to me, sorry.
>
> I think you missed the point on this one, I did not say the convention is
a rule or needs to be...  I simply meant as explained
> earlier, another way might be to say: SQLite doesn't prescribe limited
limits (if you'll excuse the tautology) because it caters for
> programmers, but you don't, you cater for users, you should ponder the
conventions and design limits that you imagine suitable.
>
> i.e. It is me trying to make a helpful statement (and possibly botching
it) about how you might think of the implementation and not
> to be confused with reflecting on sqlite's limits or paradigms, those are
what they are and the limit documentation is not fuzzy
> about it.
>
> >> Moral of the story: Pick a limit and build the system according to
that.
> > And when a fully legal table gets rejected because of such arbitrary
limits
> > I would not really be content with myself (to put it lightly).
>
> Rejected by whom? Certainly not SQLite.
> I hope the answers above show that this is not possible, and you can rest
easy now.
>
>
> > Well, almost the first thing I learned (way back when) about databases
is
> > that duplicate data is *bad*.  And now SQL queries look to be promoting
it
> > ...
>
> Data and Query constructs are not the same thing. In one duplication is
bad, in the other it is an arbitrary part of a control signal.
> Do you not say the same words "Good morning" to the same colleagues every
day? Or wait for the same green light to switch on before
> crossing the road?
>
>
> > Which is why I'm attemting to do it "the right way". ... Which than
brought me in collision with vague limits.
>
> I sincerely hope the non-vagueness of the limits are more clear now...
>
> >> I hope this helps to alleviate your headaches slightly.
> > Not really, but I'm going to try to digest it.
> >
> > Thanks for your help.
>
> Always a great pleasure, and sorry everything is not immediately clear.
Feel free to post more on any specific limit statement or
> any other SQLite thing that seems vague, we'll do our best to make it
clear.
>
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to