Hi,

I made a slight mistake in the first patch.  Here is an updated version. I
ran "make check" and all tests passed.

--- orig/fastbit-2.0.1/src/tafel.cpp 2014-11-26 11:57:53.000000000 -0700
+++ fastbit-2.0.1/src/tafel.cpp 2015-02-25 09:52:23.270784656 -0700
@@ -1898,7 +1898,9 @@
 int ibis::tafel::writeData(const char* dir, const char* tname,
                            const char* tdesc, const char* idx,
                            const char* nvpairs, uint32_t voffset) const {
-    if (cols.empty() || mrows == 0) return 0; // nothing new to write
+    int prows = maxpart != 0 ? (mrows - voffset >= maxpart ? maxpart :
mrows - voffset) : mrows;
+
+    if (cols.empty() || prows == 0) return 0; // nothing new to write
     if (dir == 0 || *dir == 0) {
         dir = "tmp";
  LOGGER(ibis::gVerbose >= 0)
@@ -2037,8 +2039,8 @@
     << " row" << (tmp.nRows()>1 ? "s" : "")
     << " and " << tmp.nColumns() << " column"
     << (tmp.nColumns()>1?"s":"")
-    << ", will append " << mrows << " new row"
-    << (mrows>1 ? "s" : "");
+    << ", will append " << prows << " new row"
+    << (prows>1 ? "s" : "");
     }
     tmp.emptyCache(); // empty cached content from mydir
  }
@@ -2055,8 +2057,8 @@
  std::ostringstream oss;
  oss << "Data initially wrote with ibis::tablex interface on "
     << stamp << " with " << cols.size() << " column"
-    << (cols.size() > 1 ? "s" : "") << " and " << nold + mrows
-    << " row" << (nold+mrows>1 ? "s" : "");
+    << (cols.size() > 1 ? "s" : "") << " and " << nold + prows
+    << " row" << (nold+prows>1 ? "s" : "");
  olddesc = oss.str();
  tdesc = olddesc.c_str();
     }
@@ -2093,8 +2095,8 @@
  }
     }
     LOGGER(ibis::gVerbose > 1)
- << "tafel::writeData starting to write " << mrows << " row"
- << (mrows>1?"s":"") << " and " << cols.size() << " column"
+ << "tafel::writeData starting to write " << prows << " row"
+ << (prows>1?"s":"") << " and " << cols.size() << " column"
  << (cols.size()>1?"s":"") << " to " << mydir << " as data partition "
  << tname;

@@ -2112,7 +2114,7 @@
     md << "# meta data for data partition " << tname
        << " written by ibis::tafel::writeData on " << stamp << "\n\n"
        << "BEGIN HEADER\nName = " << tname << "\nDescription = "
-       << tdesc << "\nNumber_of_rows = " << nold+mrows
+       << tdesc << "\nNumber_of_rows = " << nold+prows
        << "\nNumber_of_columns = " << cols.size()
        << "\nTimestamp = " << currtime;
     if (idx != 0 && *idx != 0) {

--Justin

On Wed, Feb 25, 2015 at 3:57 AM, Justin Swanhart <[email protected]>
wrote:

> Hi,
>
> I fixed the problem:
> $ ./ardea -t /tmp/fbdata2.txt -d /tmp/t6 -m 'c1:int,c2:int' -p 500000
> ...
> /home/justin/FastBit_UDF/fastbit-2.0.1/examples/.libs/lt-ardea --
> duration: 4.41886 sec(CPU), 4.3632 sec(elapsed)
>
> $ ./ibis -q "select count(*)" -d /tmp/t6
> SELECT count(*) FROM T-_01 WHERE 1=1 produced a table with 1 row and 1
> column
> 9999966
>
> $ diff -u orig/fastbit-2.0.1/src/tafel.cpp fastbit-2.0.1/src/tafel.cpp
> --- orig/fastbit-2.0.1/src/tafel.cpp 2014-11-26 11:57:53.000000000 -0700
> +++ fastbit-2.0.1/src/tafel.cpp 2015-02-25 03:56:13.508839432 -0700
> @@ -1898,7 +1898,9 @@
>  int ibis::tafel::writeData(const char* dir, const char* tname,
>                             const char* tdesc, const char* idx,
>                             const char* nvpairs, uint32_t voffset) const {
> -    if (cols.empty() || mrows == 0) return 0; // nothing new to write
> +    int prows = mrows - voffset >= maxpart ? maxpart : mrows - voffset;
> +
> +    if (cols.empty() || prows == 0) return 0; // nothing new to write
>      if (dir == 0 || *dir == 0) {
>          dir = "tmp";
>   LOGGER(ibis::gVerbose >= 0)
> @@ -2037,8 +2039,8 @@
>      << " row" << (tmp.nRows()>1 ? "s" : "")
>      << " and " << tmp.nColumns() << " column"
>      << (tmp.nColumns()>1?"s":"")
> -    << ", will append " << mrows << " new row"
> -    << (mrows>1 ? "s" : "");
> +    << ", will append " << prows << " new row"
> +    << (prows>1 ? "s" : "");
>      }
>      tmp.emptyCache(); // empty cached content from mydir
>   }
> @@ -2055,8 +2057,8 @@
>   std::ostringstream oss;
>   oss << "Data initially wrote with ibis::tablex interface on "
>      << stamp << " with " << cols.size() << " column"
> -    << (cols.size() > 1 ? "s" : "") << " and " << nold + mrows
> -    << " row" << (nold+mrows>1 ? "s" : "");
> +    << (cols.size() > 1 ? "s" : "") << " and " << nold + prows
> +    << " row" << (nold+prows>1 ? "s" : "");
>   olddesc = oss.str();
>   tdesc = olddesc.c_str();
>      }
> @@ -2093,8 +2095,8 @@
>   }
>      }
>      LOGGER(ibis::gVerbose > 1)
> - << "tafel::writeData starting to write " << mrows << " row"
> - << (mrows>1?"s":"") << " and " << cols.size() << " column"
> + << "tafel::writeData starting to write " << prows << " row"
> + << (prows>1?"s":"") << " and " << cols.size() << " column"
>   << (cols.size()>1?"s":"") << " to " << mydir << " as data partition "
>   << tname;
>
> @@ -2112,7 +2114,7 @@
>      md << "# meta data for data partition " << tname
>         << " written by ibis::tafel::writeData on " << stamp << "\n\n"
>         << "BEGIN HEADER\nName = " << tname << "\nDescription = "
> -       << tdesc << "\nNumber_of_rows = " << nold+mrows
> +       << tdesc << "\nNumber_of_rows = " << nold+prows
>         << "\nNumber_of_columns = " << cols.size()
>         << "\nTimestamp = " << currtime;
>      if (idx != 0 && *idx != 0) {
>
>
> On Wed, Feb 25, 2015 at 1:58 AM, Justin Swanhart <[email protected]>
> wrote:
>
>> Hi,
>>
>> I am having to problems with indexes I load when the setPartitionMax
>> member is used to set a maximum number of rows smaller than the number of
>> rows in the input file.
>>
>> Problem 1 - COUNT(*) on the index, immediately after loading with ardea
>> is very wrong
>> Problem 2 - Attempting to sort the index fails
>>
>> I've attached the log and the test data I am using, though it is very
>> uninteresting and the problem is not, as far as I can tell, dependent on
>> the data, just the number of rows.
>>
>> The log is verbose level five from ardea and ibis -q and ibis -r.
>> The commands used are:
>> rm -rf /tmp/t3
>> ardea -d /tmp/t3 -t fbdata.txt -p 500000 -m 'c1:int,c2:int'
>> ibis -d /tmp/t3 -q "SELECT COUNT(*)"
>> ibis -r /tmp/t3:c1,c2
>>
>> The reorder also throws a string exception which crashes the application,
>> in my case mysqld :(
>>
>>
>
_______________________________________________
FastBit-users mailing list
[email protected]
https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users

Reply via email to