• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search

World: r4wp

[Databases] group to discuss various database issues and drivers

could you tell me how can i compare values of two tables in database?
About parametrized queries: The only problem using them on R2, at 
least with RT's default ODBC, there is no chance to use NULL values. 
None of those work:
insert db-port ["INSERT t (a) VALUES (?)" NULL]
insert db-port ["INSERT t (a) VALUES (?)" 'NULL]
insert db-port ["INSERT t (a) VALUES (?)" "NULL"]
insert db-port ["INSERT t (a) VALUES (?)" none]
insert db-port reduce ["INSERT t (a) VALUES (?)" none]
you have more than one solution, the first is a simple serial SELECT 
on each table -> compare the output for equal.

of course this produce unnecessary DB overhead but I guess you won't 
feel any speed difference except you are

serving a whole city concurrently. another, better one is a JOIN 

SELECT table_name1.column_name(s), ...
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

the JOIN direction (LEFT,RIGHT,INNER) for your reference table is 
important here. 

the resultset is a table containing BOTH columns. if both having 
a value -> match, if one is empty then you don't.

index both fields to accelerate the query and use something like 
the free SQLyog 
to test different queries to make debugging easier for you.

while you situation reminds me to myself, sitting infront of a monochrom 
asthon tate dot some decades ago

and asking what next?, you should 'bite' yourself now thru the rest. 
It won't help you on longterm if you don't.
@TomBon: my query for joining two tables is :insert db["select * 
from data LEFT JOIN data1 ON data.oneone=data1.oneone"]     and output 
is :[

    ["c" "a" "t" "a" "e" "r" "o" "a" none none none none none none none 

]    plz tell me what should i write in query that i get values instead 
of none in output ?
guys when i enter correct value in form the above join query works 
properly... i need help for writing queries which other condition,it 
means if user enter wrong value ,it joins with first table but dose 
comparing indicidually  and shows error message.
the output of this query insert db[{select * from data LEFT JOIN 
data1 ON data.oneone=data1.oneone}]
 is : [

    ["c" "a" "t" "a" "e" "r" "o" "a" "c" "a" "t" "a" "e" "r" "o" "a"]
is there anyone who can help me ??
i compare each field of tables with each other like :insert db["select 
data.oneone,data1.oneone from data LEFT JOIN data1 ON data.oneone=data1.oneone"]
results: copy db 
probe results

insert db["select data.onetwo,data1.onetwo from data LEFT JOIN data1 
ON data.onetwo=data1.onetwo"]
results: copy db 
probe results

insert db["select data.onethree,data1.onethree from data LEFT JOIN 
data1 ON data.onethree=data1.onethree"]
results: copy db 
probe results .....
i got result
i need codes for showing message to user ,it mean after each joining 
,it should show user that  value  is correct or no
guys ! could you plz tell me after comparing values of two tables 
how can we show the output on web page?
after writing queries :foreach row read/custom mysql://[root-:-localhost]/test 
["select data.oneone,data1.oneone from data LEFT JOIN data1 ON data.oneone=data1.oneone"] 
[print row]

foreach row read/custom mysql://[root-:-localhost]/test ["select data.onetwo,data1.onetwo 
from data LEFT JOIN data1 ON data.onetwo=data1.onetwo"] [print row] 
i got this results:c c
a none
t t
a none
e none
r none
o none
a none
now how can i write query for everyvalues which are same and print 
correct message on web page?
hey guys... i have just 2days time for my project ! could you help 
i could not do the last step ... i should show result of comparing 
values on web page
a quick update on elasticsearch.

Currently I have reached 2TB datasize (~85M documents) on a single 

Queries now starting to slow down but the system is very stable even 

heavy load. While queries in average took between 50-250ms against 

dataset around 1TB the same queries are now in a range between 900-1500 

The average allocated java heap is around 9GB which is nearly 100% 
of the
max heap size by a 15 shards and 0 replicas setting.

elasticsearch looks like a very good candidate for handling big data 

a need for 'near realtime' analysis. Classical RDBMS like mysql and 

where grilled at around 150-500GB. Another tested candidate was MongoDB

which was great too but since it stores all metadata and fields uncompressed

the waste of diskspace was ridiculous high. Furthermore query execution 
differs unexpectable without any known reason by factor 3.

Tokyo Cabinet started fine but around 1TB I have noticed file integrity 

which leads into endless restoring/repairing procedures. Adding sharding 

by coding an additional layer wasn't very motivating but could solve 
this issue.

Within the next six months the datasize should reached the 100TB 

Would be interesting to see how elasticsearch will scale and how 
nodes are nessesary to handle this efficiently.
when you talk about "documents" what type of documents are they?
Thanks for the info Tomas.
crawled html/mime embedded documents/images etc. as plain compressed 
source (avg. 25kb) and 14 searchable metafields (ngram) to train 
different NN types for pattern recognition.
thanks  :-)
I have a problem with RebDB: how works db-select/group?

>> db-select/where/group/count [ID title post date]  archive  [find 
post "t" ] [ID]
** User Error: Invalid number of group by columns
** Near: to error! :value
Don't you need to use aggregate functions when you grouping?
* when you use grouping.
I use the sql dialect like this:

sql [select count [ID title post date] from archive group by [ID 
title post] where [find post "t"]]

The trick with this particular query is the that the "count" selector 
must have exactly one more column than the "group by" selector.  
The first three elements [ID title post] are used to sort the output 
and the last element [date] is counted.

output will be organized:
	ID	title	post	count
I would like to be able to include other columns in the output that 
are not part of the grouping or count, but I haven't figured out 
how to do this in RebDB.  I have used a parse grammar on the output 
to achieve the desired result.
I would also like to query the results of a query, which I haven't 
figured out how to do so without creating and committing a new database. 
 So I have  used a parse grammar to merge two queries.
SQLite version 4 announced/proposed. The default built-in storage 
engine is a log-structured merge database instead of B-tree in SQlite3. 
As far as I understand the docs This store could be usable standalone 
or use SQL frontend. Google to SQLite4.
I cannot see any announcement on the sqlite.org web site? SQLite 
3.7.17 is the latest and recommended version?
I saw code last year, but it's probably still in deep development
Endo as I wrote google for SQLite4. direct link is: http://sqlite.org/src4/doc/trunk/www/design.wiki.
There is a mirror of souces at https://github.com/jarredholman/sqlite4
Has anyone tried to work with ODBC under R3? I somehow can't load 
following ODBC driver DLL: https://github.com/gurzgri/r3-odbc
Or differently, has anyone worked with excel files via ODBC, using 
either R2 or R3? I tried Graham's code, which works for .xls files, 
but not .xlsx files. When I convert my file to .xls, R2 returns - 
not enough memory :-(

p: open [
     scheme: 'ODBC

     target: "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=c:\path-to-file\file.xls"
conn: first p
insert conn "select * from [Sheet1$]"
result: copy conn
As for R3 - maybe there was also some other R3 ODBC extension, somehow 
can't find it ....
hmm, found it, but no more available - http://www.rebol.org/ml-display-thread.r?m=rmlXJPF
... the problem with gurzgri DLL is, I can't somehow import it with 
any R3 version ...
What you found looks to be the latest version of that
I've also had loading problems with R3 extensions on Linux that worked 
before. Sometimes you seem to need an older R3, sometimes a newer
If all else fails, recompile the C code
well, I have even old latest Carl's view.exe, does not work either 
... lost battle here ... not fluent with recompile of ODBC DLL, does 
not imo guarantee, that loading it in R3 will actually work. I wonder 
if there was any change to import function or to extension mechanism 
itself ...
Bug fixes, I think, but they also seem to cause compatibility regressions
Do all your binding have Red-level interfaces now?
I guess some like SDL don't need that.
Yes, it's in progress. Some like SQLite are one-to-one in Red like 
in Red/System. SDL is used more as a part in other low level bindings, 
such as OpenGL. OpenGL itself is waiting for floats in Red
ok, so got valid ODBC connection string fro .xlsx files. R2 crashes 
when copying a data though ...

p: open [
     scheme: 'ODBC

     target: "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\Work\sales.xlsx;"
ok, got it kind of working with the increase of p/locals/rows to 
10K lines ... the excel sheets are so complex, that it does not return 
half of the info, it most probably counts on more columnar/db kind 
of data ...
pity Saphirion's excel dialect is not available for download anymore. 
Will try with Anton's old COMlib code ...
Sorry for the off-topic question, I though I was in another channel.
You are used to Red channel being at the top, right? :-)
Just forgot to check the channel name before posting. ;-)