Cross_Join' Algorithm and Calls


#1

There are two ways to connect arrays in SciDB,they are Join and Cross_Join.But I found that they do not have call or caller out of their files , if so ,how did they be called by arrays?( ⊙ o ⊙ )?

And if there is any papers,or algorithms,or any materials,or anything else our SciDB developers used or writed, could you share them with me ?%>_<%?

Thanks a lot!☆⌒(*^-゜)v


#2

Need some more clarification on what exactly your question is. Are you asking how to use/modify our source code (C++) for join and cross_join? Or do you just need to know how to use these operators?

If you are asking about the usage of the operators, please take a look at our online documentation:
paradigm4.com/HTMLmanual/14.12/scidb_ug/


#3

Thanks for your reply,I don’t explain my problems clearly.

I mean that if we have the operates of Join and Cross_Join,there must be somewhere to call them to completion the join function,but don’t find any files or other functions to call them.So,I think there are two reason to explain the situation:1 there is no use for join&Cross_Join operation;2 I don’t find the files/algorithms/main function or something else that use/call/called join&Cross_Join operation. Reason 1 must be wrong,so how to explain my reason 2?Where could join&cross_join can be used?How do they be called in the process of program?

BTW:I think the Join&Cross_Join is a kind of hash_join or semi-join,but where could I find their relations?I am so confused,hoping for your reply,thank you!


#4

I am still not sure I follow what you are saying. Our set of operators includes join and cross_join. Here is an example of how they may be used:

 iquery -aq "store(build(<a:double>[i=0:9,2,0],1),A)"
 iquery -aq "store(build(<b:double>[i=0:9,2,0,j=0:9,2,0],2),B)"
 iquery -aq "cross_join(A,B)"
 iquery -aq "join(B,B)"

The operators are implemented in C++ of course. But they are used through iquery or other client APIs. Are you trying to write your own C++ program and call join and cross_join from it? If you are not, then we have an executable iquery which runs the queries involving all sorts of operators (including join and cross_join).


#5

[quote=“ilikhotkin”]Need some more clarification on what exactly your question is. Are you asking how to use/modify our source code (C++) for join and cross_join? Or do you just need to know how to use these operators?

If you are asking about the usage of the operators, please take a look at our online documentation:
paradigm4.com/HTMLmanual/14.12/scidb_ug/[/quote]

Hi,
I want to know the source code(C++) of semi-join and hash join for cross_join.
please help me.

Thank you very much. :smiley:


#6

Hi,
Please take a look at src/query/ops/cross_join/PhysicalCrossJoin.cpp: boost::shared_ptr<Array> execute(...)
That is the entry point for the cross_join operator. The rest of the implementation is mostly in src/query/ops/cross_join/*