Hi, Andreas,

You patch has been checked into FastBit repository along with a fix to 
the bug related to having an alias for count(*).  A test case has been 
modified to check for this particular case in 'make check'.  Please 
feel free to download the latest nightly snapshot from 
<https://codeforge.lbl.gov/snapshots.php?group_id=44>, and let us know 
if you find any additional problems.

John

PS: Please take a look at the file ChangeLog and see of you are ok 
with the description of you patch (it is dated 2010-03-03).


On 3/3/2010 12:02 PM, K. John Wu wrote:
> Hi, Andreas,
>
> My fault.  You are absolutely right that tab.h was in error.  Your
> patch has been applied.  I am adding a small test for this problem and
> then check the update code into the SVN repository.  Thanks.
>
> John
>
>
> On 3/3/2010 11:29 AM, Andreas Streichardt wrote:
>> On Wednesday 03 March 2010 20:12:51 K. John Wu wrote:
>>> Hi, Andreas,
>>
>> Hi John,
>>
>>> Here is how I understand the SQL standard,
>>>
>>> select count(*) ...
>>>
>>> should return a table with one row and one column, and the content of
>>> the single value should be the value of "count(*)".  So if you ask how
>>> many rows the table object has, it should return 1, similarly for the
>>> number of columns.  One needs to get the actual content of the table
>>> to find out how many rows satisfy the query conditions.
>>
>> COUNT(*) tells us how many rows the result set (table) has.
>>
>> Short example in mysql:
>>
>> mysql>   SELECT COUNT(*) FROM login_att;
>> +----------+
>> | COUNT(*) |
>> +----------+
>> |        7 |
>> +----------+
>>
>> On the other hand:
>>
>> mysql>   SELECT COUNT(login_expire) FROM login_att;
>> +---------------------+
>> | COUNT(login_expire) |
>> +---------------------+
>> |                   2 |
>> +---------------------+
>>
>> This counts all NON NULL values of the specified field in the table.
>>
>> What fastbit currently does (without my patch): It always reports 1 as
>> COUNT(*) which is definately wrong here.
>>
>>> I guess what you want might be a tabula object.  To get that one,
>>> leave the select clause a blank string or a nil pointer.  Since I did
>>> not see anything in SQL standard about a missing select clause, I have
>>> implementation a table with a certain number of rows but without
>>> columns -- a fairly silly object, but might be what you are after.
>>
>> What i am currently doing is i am faciliating the table::select interface of
>> fastbit. This creates a tabele object for count(*) and this one currently
>> reports 1 for every COUNT(*) query. So i am not using the lower level stuff 
>> of
>> fastbit yet.
>>
>> These are the lines in mensa.cpp:
>>
>>       else if (stricmp(sel, "count(*)") == 0) { // count(*)
>>      int64_t nhits = computeHits(cond);
>>      if (nhits<   0) {
>>          return 0;
>>      }
>>      else {
>>          std::string des = name_;
>>          if (! desc_.empty()) {
>>              des += " -- ";
>>              des += desc_;
>>          }
>>          return new ibis::tabele(cond, des.c_str(), nhits);
>>      }
>>       }
>>
>> Here fastbit correctly counts the number of hits and creates a correct tabele
>> object.
>>
>> After selecting via table::select i am generating a cursor:
>>
>>       ibis::table::cursor *cur;
>>       cur=result->createCursor();
>>       while (0 == cur->fetch()) {
>> [...]
>>           else if (tps[j]==ibis::ULONG)
>>           {
>>             uint64_t ivalue;
>>             cur->getColumnAsULong(nms[j],ivalue);
>>           }
>> [...]
>>
>> Here i am always getting a 1 due to the problem in the cursor.
>>
>> Am i doing something wrong here? If not i am pretty sure i hit a bug :S
>>
>>> If anyone knows exactly what the SQL standard intended, please let us
>>> know.
>>
>> I am not really into the SQL standard but i am pretty sure that the mysql
>> behaviour is as intended by the standard here.
>>
>>> John
>>
>> Kind regards,
>>
>>      Andreas Streichardt
> _______________________________________________
> FastBit-users mailing list
> [email protected]
> https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
_______________________________________________
FastBit-users mailing list
[email protected]
https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users

Reply via email to