Re: [sqlite] Virtual table API performance

2014-03-01 Thread Max Vlasov
Hi,
thanks for explaining your syntax in another post. Now about virtual
tables if you don't mind.

On Fri, Feb 28, 2014 at 8:24 PM, Eleytherios Stamatogiannakis
 wrote:
>
> If we load into SQLite, 
>
> create table newtable as select * from READCOMPRESSEDFILE('ctable.rc');
>
> it takes: 55 sec
>
>
> If we create an external program 
>
> it takes: 19 sec (~3x faster than using the virtual table API)
>
>

Looking at your numbers, as a user (and fan :) of virtual tables I
decided to do some tests.

I have a virtual table "all values", it was designed for enumeration
of all tables values to the one single virtual table, so finally it is
a long list of

  TableName, TableRowId, FieldName, Value

so you get the idea. As an example of what it may do, you may open
places.sqlite of mozilla browser and do

  Select * from AllValues where Value Like "%sqlite.org%"

and see actual results even not knowing how they planned their schema.

Internally this virtual table simply uses general selects for all
other tables met in sqlite_master. This is a good (but probably not
the best) test for measuring virtual tables performance, because

  SELECT * FROM AllValues

is equivalent to reading all conventional tables of this database.
Besides
- the tool I use has a tweaker implemented with VFS that allows
measuring speed and other characteristics of the query performed while
the query is in effect.
- I have an option that forces resetting windows cache for the
database file when it is reopened. So with it we exclude the windows
cache from consideration so pure I/O reading is used. Btw, when you do
your comparison, it's very important to reset system cache before
every measurement that involves I/O.


So I took a comparatively large (500 Mb) database consisting of
several small and one big table (Posts) and compared two queries.

(Query1)

  Select sum(length(Body) + length(Title)) from Posts

This ones effectively reads the table data and uses
- length() to force sqlite reading texts that don't fit into single db page
- sum() to exclude accumulating results on my side from comparison, so
we have a single row, single column result from the work completely
done by sqlite.

(Query2)

  Select Sum(Length(Value)) from AllValues

This one performs basically the same but using sqlite virtual tables
api. It also touches other tables, but since they're small, we can
forget about this.

Query1 (General):
  Read: 540MB,
  Time: 24.2 sec,
  CPU Time: 6 Sec (25%)
  Speed: 22.31 MB/Sec

Query2 (Virtual):
  Read: 540MB,
  Time: 27.3 Sec,
  CPU Time: 13 sec (51%)
  Speed: 20 MB/Sec

In my particular test the noticeable difference is at the part of the
CPU spent more with the virtual table. I assume this can be related to
my own implementation of this virtual table since I should retrieve,
store values temporary somewhere and talk to sqlite. But this also may
shed light on your performance drop. If your virtual implementation
spend much time processing a value, you may finally get a big drop.

You may tell that this test is not fair because it does not involve
creating a table from the values of a virtual table. Unfortunately I
can't create good enough test comparing Posts and AllValues table as
sources, because the destination geometry of the tables are different
( Posts have more columns, less rows, AllValue less columns, more
rows). The closest approximation was possible when I created an
intermediate physical table containing the results from AllValues and
compared table creation from this table and from virtual table. The
virtual one took longer, but the values - 56 seconds vs 43 second not
different enough to conclude something.

I'm not sure my tests defend sqlite virtual tables sufficiently, but
currently I don't have evidence of significant inefficiency either.

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


Re: [sqlite] Possible issue in optimizer, strips away order by

2014-03-01 Thread nobre
Great, thanks!


2014-02-26 0:11 GMT-03:00 Richard Hipp-3 [via SQLite] <
ml-node+s1065341n74140...@n5.nabble.com>:

> On Tue, Feb 25, 2014 at 1:11 PM, nobre <[hidden 
> email]>
> wrote:
>
> > Hi! Given this schema:
> >
> > create table q (id integer primary key, idLevel integer);
> > create table level (id integer primary key);
> >
> > insert into q values(1, 1);
> > insert into q values(2, 1);
> > insert into q values(3, 1);
> > insert into level values(1);
> >
> > When running this query:
> > select p.* FROM
> > q as p
> > inner join level pn ON (p.idLevel = pn.id)
> > where p.idLevel = 1
> > ORDER BY  random()  LIMIT 10
> >
> > The results are not on random order on SQLite 3.8.0.2
> > Verifying with EXPLAIN QUERY PLAN , it can be seen that no ORDER BY step
> is
> > included.
> >
> > if one of the following is changed:
> > LEFT join level instead of inner or the where clause condition is
> changed
> > to
> > p.idLevel >=1 and p.idLevel <= 1, the Order by step is included in the
> > query, and the result order is random as expected.
> >
> > Anything I'm missing ?
> >
>
> Now fixed on trunk.  http://www.sqlite.org/src/info/dca1945aeb
>
> --
> D. Richard Hipp
> [hidden email] 
> ___
> sqlite-users mailing list
> [hidden email] 
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>
> --
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://sqlite.1065341.n5.nabble.com/Possible-issue-in-optimizer-strips-away-order-by-tp74134p74140.html
>  To unsubscribe from Possible issue in optimizer, strips away order by, click
> here
> .
> NAML
>




--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/Possible-issue-in-optimizer-strips-away-order-by-tp74134p74227.html
Sent from the SQLite mailing list archive at Nabble.com.
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Petite Abeille

On Mar 1, 2014, at 9:34 PM, Stephan Beal  wrote:

> note the duplicate first entry.

Make sure to start everything at zero:

 select  sqlite_compileoption_get( 0 ) as name,
 0 as position


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


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Stephan Beal
On Sat, Mar 1, 2014 at 8:02 PM, Petite Abeille wrote:

>
> On Mar 1, 2014, at 7:46 PM, Bogdan Ureche  wrote:
>
> > You are missing one value. To get all the values, start from 0:
>
> At least someone is paying attention! Thanks :)
>

Strangely enough, starting at 1 seems to be right on my box:

at 1:

ENABLE_STAT3
OMIT_LOAD_EXTENSION
SYSTEM_MALLOC
THREADSAFE=0

at 0:

ENABLE_STAT3
ENABLE_STAT3
OMIT_LOAD_EXTENSION
SYSTEM_MALLOC
THREADSAFE=0


note the duplicate first entry.

-- 
- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
"Freedom is sloppy. But since tyranny's the only guaranteed byproduct of
those who insist on a perfect world, freedom will have to do." -- Bigby Wolf
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Compiling SQLite on VxWorks 6.3 (DKM)

2014-03-01 Thread Roger Binns
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 28/02/14 06:37, deltuo wrote:
> i compile sqlite 3.8.3 to vxworks 6.9,  i  first compile sqlite in dkm
> and get xx.a lib file, and then test it in vip project, but meet disk
> i/o error, can you help me ? thank you , my email is del...@126.com

  http://catb.org/~esr/faqs/smart-questions.html

Roger

-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.14 (GNU/Linux)

iEUEARECAAYFAlMSPxoACgkQmOOfHg372QQXIQCfT7Sa9kempGXWTYs+L6aot98I
Rw8AmJ2dp9jR0bN0FThp98ab/ZygeD0=
=T0I3
-END PGP SIGNATURE-
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread mm.w
Hello

you meant that's for the Buzz 8) (joke inside)

Best Regards


On Sat, Mar 1, 2014 at 11:06 AM, Petite Abeille wrote:

>
> On Mar 1, 2014, at 6:30 PM, mm.w <0xcafef...@gmail.com> wrote:
>
> > ? PRAGMA compile_options;
>
> Yes, sure. But much snazzier to use a CTE, no? :D
>
>  ( One very unfortunate aspect of pragmas is that one cannot query them
> with regular SQL… sigh…)
>
> ___
> 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


Re: [sqlite] basic "Window function"

2014-03-01 Thread Petite Abeille

On Mar 1, 2014, at 7:39 PM, big stone  wrote:

> Would it be possible to get a small basic subset of the sql  windowing
> function for Sqlite 3.8.5  ?

Yes! Pretty please :)

Supporting windowing functions (aka analytics) would be a major  breakthrough.

http://www.orafaq.com/node/55

Here is a pretty nifty algorithm using analytics, the "Tabibitosan method”:

http://boneist-oracle.livejournal.com/7389.html
http://forums.oracle.com/forums/thread.jspa?messageID=3989678



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


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Petite Abeille

On Mar 1, 2014, at 6:30 PM, mm.w <0xcafef...@gmail.com> wrote:

> ? PRAGMA compile_options;

Yes, sure. But much snazzier to use a CTE, no? :D

 ( One very unfortunate aspect of pragmas is that one cannot query them with 
regular SQL… sigh…)

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


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Petite Abeille

On Mar 1, 2014, at 7:46 PM, Bogdan Ureche  wrote:

> You are missing one value. To get all the values, start from 0:

At least someone is paying attention! Thanks :)

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


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Bogdan Ureche
You are missing one value. To get all the values, start from 0:

with
Option( name, position )
as
(
  select  sqlite_compileoption_get( 0 ) as name,
  0 as position

  union all
  select  sqlite_compileoption_get( position + 1 ) as name,
  position + 1 as position
  fromOption
  where   sqlite_compileoption_get( position + 1 ) is not null
)
selectname
from  Option

order by  name

Bogdan Ureche



On Sat, Mar 1, 2014 at 9:01 AM, Petite Abeille wrote:

> Just because we can:
>
> with
> Option( name, position )
> as
> (
>   select  sqlite_compileoption_get( 1 ) as name,
>   1 as position
>
>   union all
>   select  sqlite_compileoption_get( position + 1 ) as name,
>   position + 1 as position
>   fromOption
>   where   sqlite_compileoption_get( position + 1 ) is not null
> )
> selectname
> from  Option
>
> order by  name
>
> > ENABLE_FTS3_PARENTHESIS
> > ENABLE_RTREE
> > ENABLE_STAT4
> > SYSTEM_MALLOC
> > THREADSAFE=1
>
>
>
> ___
> 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


[sqlite] basic "Window function"

2014-03-01 Thread big stone
Hello,

Sqlite 3.8.3 implemented recursive CTE.

Sqlite 3.8.4 is shaping to be another great tuning/optimisation release.

Would it be possible to get a small basic subset of the sql  windowing
function for Sqlite 3.8.5  ?

If we imagine that the basic windowing is a bit like a CTE 'rewording', it
may be very small in code size, wouldn't it ?

Example :

** a basic SQL window functions usage **

SELECT SalesOrderID, ProductID, OrderQty
,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total'
,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg'
,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count'
,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min'
,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max'
FROM SalesOrderDetail

** 'internal' CTE rewording of a basic SQL window functions usage **


With window_this(SalesOrderID, su, av, co, mi, ma) as (

select SalesOrderID,
SUM(OrderQty),AVG(OrderQty),COUNT(OrderQty),MIN(OrderQty),MAX(OrderQty)
FROM SalesOrderDetail )

SELECT SalesOrderID, ProductID, OrderQty
,su AS 'Total'
,av AS 'Avg'
,co AS 'Count'
,mi AS 'Min'
,ma AS 'Max'
FROM SalesOrderDetail  inner join
  on window_this on SalesOrderDetail.SalesOrderID = window_this.SalesOrderID
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread mm.w
Hello,

? PRAGMA compile_options;

Best Regards.


On Sat, Mar 1, 2014 at 7:01 AM, Petite Abeille wrote:

> Just because we can:
>
> with
> Option( name, position )
> as
> (
>   select  sqlite_compileoption_get( 1 ) as name,
>   1 as position
>
>   union all
>   select  sqlite_compileoption_get( position + 1 ) as name,
>   position + 1 as position
>   fromOption
>   where   sqlite_compileoption_get( position + 1 ) is not null
> )
> selectname
> from  Option
>
> order by  name
>
> > ENABLE_FTS3_PARENTHESIS
> > ENABLE_RTREE
> > ENABLE_STAT4
> > SYSTEM_MALLOC
> > THREADSAFE=1
>
>
>
> ___
> 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


[sqlite] sqlite_compileoption_get + cte

2014-03-01 Thread Petite Abeille
Just because we can:

with
Option( name, position )
as
(
  select  sqlite_compileoption_get( 1 ) as name,
  1 as position

  union all
  select  sqlite_compileoption_get( position + 1 ) as name,
  position + 1 as position
  fromOption
  where   sqlite_compileoption_get( position + 1 ) is not null
)
selectname
from  Option

order by  name

> ENABLE_FTS3_PARENTHESIS
> ENABLE_RTREE
> ENABLE_STAT4
> SYSTEM_MALLOC
> THREADSAFE=1



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


Re: [sqlite] Compiling SQLite on VxWorks 6.3 (DKM)

2014-03-01 Thread deltuo
i compile sqlite 3.8.3 to vxworks 6.9,  i  first compile sqlite in dkm and
get xx.a lib file, and then test it in vip project, but meet disk i/o error,
can you help me ? thank you , my email is del...@126.com



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/Compiling-SQLite-on-VxWorks-6-3-DKM-tp63955p74185.html
Sent from the SQLite mailing list archive at Nabble.com.
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


[sqlite] compile sqlite3.8.3 to vxworks platform meet disk i/o error

2014-03-01 Thread deltuo
i compile sqlite 3.8.3 to vxworks 6.9,  i  first compile sqlite in dkm and
get xx.a lib file, and then test it in vip project, but meet disk i/o error,
can you help me ? thank you , my email is del...@126.com



--
View this message in context: 
http://sqlite.1065341.n5.nabble.com/compile-sqlite3-8-3-to-vxworks-platform-meet-disk-i-o-error-tp74188.html
Sent from the SQLite mailing list archive at Nabble.com.
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users


Re: [sqlite] Virtual Table "Functions"

2014-03-01 Thread Elefterios Stamatogiannakis

Please excuse me for not explaining.

The syntax that you puzzle about is supported by madIS [*] which 
translates it into SQLite. Having being using madIS for many years (we 
created it in 2008) it comes natural to me, forgetting that SQLite 
doesn't support it.


What essentially madIS does is to create and destroy the virtual tables 
in an madIS/SQLite query. It also supports an "inverted" syntax, that 
permits virtual table pipelines (like pipes in unix):


select * from (XMLPARSE select * from FILE("data.xml"));

above query is the same as writting:

select * from XMLPARSE(' select * from FILE("data.xml") ')

but without the thorny quote escaping problems.

The "select * from " part is optional (it is autocompleted) so above 
query could be rewritten to:


XMLPARSE FILE "data.xml";

Both XMLPARSE and FILE are regular SQLite virtual table functions coded 
in Python (the whole madIS is in Python). Also, due to SQLite's virtual 
table API design quality, both functions are also streaming (XML parsing 
works on continuous multi-GB long streams of XML input, coming from the 
internal query that uses FILE).


You may think that it is crazy to do this pipelining through a 
relational engine (SQLite), but the whole thing is very fast and very 
versatille. We have been processing hundrends of GB of data (in various 
forms) using such "enhanced" SQLite queries for many years.


Having said all of the above, i hope that you can see why we care so 
much about SQLite's virtual table API efficiency.


estama.

[*] https://code.google.com/p/madis/

On 1/3/2014 10:35 πμ, Max Vlasov wrote:

On Fri, Feb 28, 2014 at 10:14 PM, Dominique Devienne
 wrote:

Can someone tell me how the statement below works?


Thanks for any help on this. This is really puzzling to me. --DD



Very puzzling for me too
For any statement like this

   select * from blablabla(123)

sqlite (3.8.3.1) primarily reports syntax a error...

near "(": syntax error

... before complaining about anything else.

I'd also be glad to see a shortcut when a virtual table created just
for a select statement and dies automatically, but I suspect it is not
supported and it was their own modified version of sqlite. Hope OP
reads this post also and will have an answer for us. Probably this
will help providing following information regarding his issues.

Max
___
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


Re: [sqlite] Why SQLITE_FLOAT instead of SQLITE_REAL?

2014-03-01 Thread RSmith


On 2014/03/01 10:32, Darren Duncan wrote:


If you're going by semantics though, the meanings are quite different.

A real number represents a point on a line and can be either a rational or irrational number.  (And a complex number is a point on 
a plane.)  An important bit is that a real is a more abstract concept and doesn't imply a single right representation.


In contrast, a float is much more specific, defining also a representation, and as such a float can only be a rational number 
(x*y^z where all 3 are integers, and y is typically 2) and not an irrational.  (Or I suppose if you allow {x,y,z} to be 
non-integers then a float is even more about a representation.)


Speaking in terms of programming language design, "real" is best suited for an abstract type name, that is one that defines an 
interface for using a set of types, same as "numeric".  Whereas, "float" is best suited for the name of a concrete type, like with 
"integer" and "ratio".  (Well strictly speaking all of these could be abstract types, but the latter set are more specific in 
meaning, and in particular "ratio" and "float" imply a representation while the others don't.




I take your point, and thanks for the dissertation.

I would like to point out though that the "implied" meaning of words that were pressed into service in programming languages have 
rarely survived the transition.  A "String" really implies lengthy extrusions of fibrous bundles (but smaller than a "rope") and 
"Long" has no single numerical implication outside of a programming language.  Other less interesting examples abound but suffice to 
say that while true meanings of words can and should influence their use within code, an altered understanding that fits a binary 
universe are often (if not always) the defacto implication. - much as the mathematicians among us abhor the idea.


Hence the copious amount of aliases which attempt to align the meanings between historically different names for essentially the 
same function or functionality in programming terms - all of which can be argued for in implication or semantic terms.


i.e. - You are correct - but I don't see it ever being applicable, or indeed 
apply-able, as a standard.

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


Re: [sqlite] Virtual Table "Functions"

2014-03-01 Thread Max Vlasov
On Fri, Feb 28, 2014 at 10:14 PM, Dominique Devienne
 wrote:
> Can someone tell me how the statement below works?
> 
>
> Thanks for any help on this. This is really puzzling to me. --DD


Very puzzling for me too
For any statement like this

  select * from blablabla(123)

sqlite (3.8.3.1) primarily reports syntax a error...

   near "(": syntax error

... before complaining about anything else.

I'd also be glad to see a shortcut when a virtual table created just
for a select statement and dies automatically, but I suspect it is not
supported and it was their own modified version of sqlite. Hope OP
reads this post also and will have an answer for us. Probably this
will help providing following information regarding his issues.

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


Re: [sqlite] Why SQLITE_FLOAT instead of SQLITE_REAL?

2014-03-01 Thread Darren Duncan

On 3/1/2014, 12:16 AM, RSmith wrote:

On 2014/02/28 23:36, L. Wood wrote:

SQLite has the REAL data type:

https://www.sqlite.org/datatype3.html

Then why do we have SQLITE_FLOAT instead of SQLITE_REAL? All the other data
types (INTEGER, BLOB, TEXT, NULL) match with the SQLITE_ constants.


Quoting Shakespeare's Juliet:
"What's in a name? that which we call a rose by any other name would smell as
sweet..."

Of course in matters of love one can nod to that, but it can't be more wrong in
SQL or any code terms!
This may be a quirk, but in the defense, those type names are interchangeable
(or I should say Aliased) in most modern languages.


If you're going by semantics though, the meanings are quite different.

A real number represents a point on a line and can be either a rational or 
irrational number.  (And a complex number is a point on a plane.)  An important 
bit is that a real is a more abstract concept and doesn't imply a single right 
representation.


In contrast, a float is much more specific, defining also a representation, and 
as such a float can only be a rational number (x*y^z where all 3 are integers, 
and y is typically 2) and not an irrational.  (Or I suppose if you allow {x,y,z} 
to be non-integers then a float is even more about a representation.)


Speaking in terms of programming language design, "real" is best suited for an 
abstract type name, that is one that defines an interface for using a set of 
types, same as "numeric".  Whereas, "float" is best suited for the name of a 
concrete type, like with "integer" and "ratio".  (Well strictly speaking all of 
these could be abstract types, but the latter set are more specific in meaning, 
and in particular "ratio" and "float" imply a representation while the others don't.


-- Darren Duncan

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


Re: [sqlite] Why SQLITE_FLOAT instead of SQLITE_REAL?

2014-03-01 Thread RSmith


On 2014/02/28 23:36, L. Wood wrote:

SQLite has the REAL data type:

https://www.sqlite.org/datatype3.html

Then why do we have SQLITE_FLOAT instead of SQLITE_REAL? All the other data 
types (INTEGER, BLOB, TEXT, NULL) match with the SQLITE_ constants.


Quoting Shakespeare's Juliet:
"What's in a name? that which we call a rose by any other name would smell as 
sweet..."

Of course in matters of love one can nod to that, but it can't be more wrong in 
SQL or any code terms!
This may be a quirk, but in the defense, those type names are interchangeable 
(or I should say Aliased) in most modern languages.


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