Distinguishing between "on joins" and "where joins"

OPEN - task 17: Generate Spark/Scala code for group_by_clauses 
See #17: http://github.com/meisam/YSmart/issues/issue/17
Implementing all aggregate functions that are used in TPCH queries.

CLOSED - task 17: Generate Spark/Scala code for group_by_clauses 
See #17: http://github.com/meisam/YSmart/issues/issue/17
Fixing column reads when rows are calculated.

Columns whose value is computes with a function are not impleneteed yet,
nor do they appear in TPCH and SSB benchmarks.
Fixing the way count distinct is handled.

Instead of converting a sequence to a set to make its elements unique,
we can use the builtin distinct() method on the sequence.

CLOSED - task 17: Generate Spark/Scala code for group_by_clauses 
See #17: http://github.com/meisam/YSmart/issues/issue/17
A hack for finding column index in a column.

This is an absolute hack and the generated code should be manually
examined to make sure that an index 1000 or 1001 does not exist for any
column that is used in a join.

OPEN - task 19: lookup_column_index() in translator.py cannot find the
correct column index 
See #19: http://github.com/meisam/YSmart/issues/issue/19
Fixes #20

Instead of calling line.split() many times, calls it only once and keeps
the results in a temporary variable.

Generated Spark/Scala jobs may need less memory to run after this
change.

OPEN - task 20: After scanning a table, call line.split() only once 
See #20: http://github.com/meisam/YSmart/issues/issue/20
lookup_column_index() return the correct column number for child nodes.

Children of a join can be Table nodes, a GroupBy nodes, or other join
nodes. OrderBy nodes do not appear in TPCH and SSB benchmarks as
children of joins, so they are not handled here.

This fixes #19
See #19: http://github.com/meisam/YSmart/issues/issue/19
Cosmetics and clean up
Returning a tuple1 instead of a primitive type in there is only one
column is projected after a join

Fixes #22

OPEN - task 22: Generated code for join does not project a tuple if only
one column is returned 
See #22: http://github.com/meisam/YSmart/issues/issue/22
clean up
GEnerating Spark/Scala code for joins that are more efficient.

Instead of doing a Cartesian product of two RDDs and then filtering the
results, YSmart now calls into RDD.join method which is much more
efficient way for joining two RDDs. The children RDDs should be prepared
before join.

This fixes #24

OPEN - task 24: Joins implemented with Cartesian product are terribly
slow and run out of memory easily 
See #24: http://github.com/meisam/YSmart/issues/issue/24
Adding test stubs for all TPCH and SSB queries.

I need check the output of the generated Spark/Scala jobs. Right now I
am relying too much on assertions to make connection work.
Adding a test case for queries with GroupBy clauses
Cosmetics

Fix the order of test cases for SSB benchmarks
Changing expected parser output for TPCH queries

This is the output that we should get if we do not change all string
literials to uupercase.

OPEN - task 3: sql2xml.toXml changes SQL queries to uppercase 
See #3: http://github.com/meisam/YSmart/issues/issue/3
Changing expected parser output for SSB queries.

OPEN - task 3: sql2xml.toXml changes SQL queries to uppercase 
See #3: http://github.com/meisam/YSmart/issues/issue/3
Testing YSmart parse without changing queries to upperchase.
OPEN - task 3: sql2xml.toXml changes SQL queries to uppercase 
See #3: http://github.com/meisam/YSmart/issues/issue/3
Keeping the case of string literals in queries.

Previously, YSmart was changing all queries to uppercase before parsing
them. This makes parsing SQL which is a case insensitive language a lot
easier but, at the same time, can change the semantics of queries if
they have string literals with lower case characters in them.

Example:

SELECT name from tbl1
where name = "John"

would change return results with name = "JOHN" instead of "John".

Fixes #3.
OPEN - task 3: sql2xml.toXml changes SQL queries to uppercase 
See #3: http://github.com/meisam/YSmart/issues/issue/3
Adding SSB3_4 to the set of test cases for YSmart parser.