Hi Josh,

I found the problem and fixed it.  You can pick up the fix by pulling the
latest code from the master branch of the git repository (see source
repository <http://code.google.com/p/hypertable/wiki/SourceCode?tm=4>)  As
it turns out, there was an existing regression test that should have caught
this, but I did not carefully inspect the output when I initially checked it
in.  :( I've also added your test to the regression.  Here's the new output
(with a couple of additional insert statements):

[EMAIL PROTECTED] 0.9.0.10]$ ./bin/hypertable <
~/issues/max_version/problem_ex.hql

Welcome to the hypertable command interpreter.
For information about Hypertable, visit http://www.hypertable.org/

Type 'help' for a list of commands, or 'help shell' for a
list of shell meta commands.

hypertable> CREATE TABLE bug ( F MAX_VERSIONS=1 );
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V1');
hypertable> SELECT * FROM bug;
R       F:Q     V1
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V2');
hypertable> SELECT * FROM bug;
R       F:Q     V2
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V3');
hypertable> SELECT * FROM bug;
R       F:Q     V3
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V4');
hypertable> SELECT * FROM bug;
R       F:Q     V4
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V5');
hypertable> SELECT * FROM bug;
R       F:Q     V5
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V6');
hypertable> SELECT * FROM bug;
R       F:Q     V6
hypertable> DROP TABLE bug;
hypertable> CREATE TABLE bug ( F MAX_VERSIONS=2 );
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V1');
hypertable> SELECT * FROM bug;
R       F:Q     V1
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V2');
hypertable> SELECT * FROM bug;
R       F:Q     V2
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V3');
hypertable> SELECT * FROM bug;
R       F:Q     V3
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V4');
hypertable> SELECT * FROM bug;
R       F:Q     V4
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V5');
hypertable> SELECT * FROM bug;
R       F:Q     V5
hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
hypertable> SELECT * FROM bug;
hypertable> INSERT INTO bug VALUES ('R','F:Q','V6');
hypertable> INSERT INTO bug VALUES ('R','F:Q','V7');
hypertable> SELECT * FROM bug;
R       F:Q     V7
R       F:Q     V6
hypertable> INSERT INTO bug VALUES ('R','F:Q','V8');
hypertable> SELECT * FROM bug;
R       F:Q     V8
R       F:Q     V7
hypertable> DROP TABLE bug;

- Doug

On Wed, Aug 27, 2008 at 6:06 PM, Joshua Taylor <[EMAIL PROTECTED]>wrote:

> I'm seeing some strange behavior when setting and deleting cells in
> Hypertable.  When using MAX_VERSIONS, if I set and delete a cell a few times
> I don't seem to be able to set it again.  I was assuming that MAX_VERSIONS=K
> would keep up to the latest K versions of cell in the table.  In my case,
> I'm only interested in keeping the latest version of each cell
> (MAX_VERSIONS=1), but I want to be able to rewrite the cell as many times as
> I'd like.  Am I misinterpreting the parameter?
>
> Here's an example on Hypertable 0.9.0.10a with Hadoop 0.17.2 on a cluster
> of 15 machines.  The hypertable client process is running on a separate
> machine outside the cluster.
>
> hypertable> CREATE TABLE bug ( F MAX_VERSIONS=1 );
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V1');
> hypertable> SELECT * FROM bug;
> R    F:Q    V1
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V2');
> hypertable> SELECT * FROM bug;
> R    F:Q    V2
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V3');
> hypertable> SELECT * FROM bug;
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V4');
> hypertable> SELECT * FROM bug;
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V5');
> hypertable> SELECT * FROM bug;
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V6');
> hypertable> SELECT * FROM bug;
> hypertable> DROP TABLE bug;
> hypertable>
>
> hypertable> CREATE TABLE bug ( F MAX_VERSIONS=2 );
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V1');
> hypertable> SELECT * FROM bug;
> R    F:Q    V1
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V2');
> hypertable> SELECT * FROM bug;
> R    F:Q    V2
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V3');
> hypertable> SELECT * FROM bug;
> R    F:Q    V3
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V4');
> hypertable> SELECT * FROM bug;
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V5');
> hypertable> SELECT * FROM bug;
> hypertable> DELETE 'F:Q' FROM bug WHERE ROW = 'R';
> hypertable> SELECT * FROM bug;
> hypertable> INSERT INTO bug VALUES ('R','F:Q','V6');
> hypertable> SELECT * FROM bug;
> hypertable> DROP TABLE bug;
> hypertable>
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to