You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by st...@apache.org on 2007/09/13 06:01:07 UTC

svn commit: r575156 [2/3] - in /lucene/hadoop/trunk/src/contrib/hbase: ./ src/java/org/apache/hadoop/hbase/ src/java/org/apache/hadoop/hbase/shell/ src/java/org/apache/hadoop/hbase/shell/generated/ src/test/org/apache/hadoop/hbase/ src/test/org/apache/...

Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/SelectCommand.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/SelectCommand.java?rev=575156&r1=575155&r2=575156&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/SelectCommand.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/SelectCommand.java Wed Sep 12 21:01:05 2007
@@ -20,6 +20,7 @@
 package org.apache.hadoop.hbase.shell;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
@@ -35,75 +36,66 @@
 import org.apache.hadoop.io.DataInputBuffer;
 import org.apache.hadoop.io.Text;
 
+/**
+ * Selects values from tables.
+ * 
+ * TODO: INTO FILE is not yet implemented.
+ */
 public class SelectCommand extends BasicCommand {
   
-  private Text table;
+  private Text tableName;
+  private Text rowKey = new Text("");
+  private List<String> columns;
+  private long timestamp;
   private int limit;
-  private Map<String, List<String>> condition;
+  private int version;
+  private boolean whereClause = false;
 
   public ReturnMsg execute(Configuration conf) {
-    if (this.condition != null && this.condition.containsKey("error"))
+    if (this.tableName.equals("") || this.rowKey == null ||
+        this.columns.size() == 0) {
       return new ReturnMsg(0, "Syntax error : Please check 'Select' syntax.");
-
+    } 
+    
     try {
-      HTable table = new HTable(conf, this.table);
+      HTable table = new HTable(conf, this.tableName);
       HBaseAdmin admin = new HBaseAdmin(conf);
-      
-      switch (getCondition()) {
-      case 0:
-
-        HTableDescriptor[] tables = admin.listTables();
-        Text[] columns = null;
+      if (this.whereClause) {
+        compoundWherePrint(table, admin);
+      } else {
+        scanPrint(table, admin);
+      }
+      return new ReturnMsg(1, "Successfully print out the selected data.");
+    } catch (IOException e) {
+      String[] msg = e.getMessage().split("[,]");
+      return new ReturnMsg(0, msg[0]);
+    }
+  }
 
-        if (this.table.equals(HConstants.ROOT_TABLE_NAME)
-            || this.table.equals(HConstants.META_TABLE_NAME)) {
-          columns = HConstants.COLUMN_FAMILY_ARRAY;
-        } else {
-          for (int i = 0; i < tables.length; i++) {
-            if (tables[i].getName().equals(this.table)) {
-              columns = tables[i].families().keySet().toArray(new Text[] {});
-            }
+  private void compoundWherePrint(HTable table, HBaseAdmin admin) {
+    try {
+      if (this.version != 0) {
+        byte[][] result = null;
+        Text[] cols = getColumns(admin);
+        for (int i = 0; i < cols.length; i++) {
+          if (this.timestamp == 0) {
+            result = table.get(this.rowKey, cols[i], this.timestamp, this.version);
+          } else {
+            result = table.get(this.rowKey, cols[i], this.version);
           }
-        }
-
-        HScannerInterface scan = table.obtainScanner(columns, new Text(""));
-        HStoreKey key = new HStoreKey();
-        TreeMap<Text, byte[]> results = new TreeMap<Text, byte[]>();
-
-        ConsoleTable.selectHead();
-        int count = 0;
-        while (scan.next(key, results)) {
-          Text rowKey = key.getRow();
-
-          for (Text columnKey : results.keySet()) {
-            byte[] value = results.get(columnKey);
-            String cellData = new String(value, HConstants.UTF8_ENCODING);
-
-            if (columnKey.equals(HConstants.COL_REGIONINFO)) {
-              DataInputBuffer inbuf = new DataInputBuffer();
-              HRegionInfo info = new HRegionInfo();
-              inbuf.reset(value, value.length);
-              info.readFields(inbuf);
 
-              cellData = "ID : " + String.valueOf(info.getRegionId());
-            }
-            ConsoleTable.printLine(count, rowKey.toString(), columnKey.toString(),
-                cellData);
-            count++;
+          ConsoleTable.selectHead();
+          for (int ii = 0; ii < result.length; ii++) {
+            ConsoleTable.printLine(i, this.rowKey.toString(), cols[i].toString(),
+                new String(result[ii], HConstants.UTF8_ENCODING));
           }
-          results = new TreeMap<Text, byte[]>();
+          ConsoleTable.selectFoot();
         }
-        ConsoleTable.selectFoot();
-        scan.close();
-
-        break;
-
-      case 1:
-
-        count = 0;
+      } else {
+        int count = 0;
         ConsoleTable.selectHead();
-        for (Map.Entry<Text, byte[]> entry : table.getRow(new Text(getRow())).entrySet()) {
-
+        
+        for (Map.Entry<Text, byte[]> entry : table.getRow(this.rowKey).entrySet()) {
           byte[] value = entry.getValue();
           String cellData = new String(value, HConstants.UTF8_ENCODING);
 
@@ -112,138 +104,121 @@
             HRegionInfo info = new HRegionInfo();
             inbuf.reset(value, value.length);
             info.readFields(inbuf);
-
-            cellData = "ID : " + String.valueOf(info.getRegionId());
+            cellData = String.valueOf(info.getRegionId());
           }
-          ConsoleTable.printLine(count, getRow().toString(), entry.getKey().toString(),
-              cellData);
-          count++;
-        }
-        ConsoleTable.selectFoot();
-
-        break;
-
-      case 2:
-
-        Text[] column = new Text[] { new Text(getColumn()) };
-
-        HScannerInterface scanner = table.obtainScanner(column, new Text(""));
-        HStoreKey k = new HStoreKey();
-        TreeMap<Text, byte[]> r = new TreeMap<Text, byte[]>();
 
-        ConsoleTable.selectHead();
-        count = 0;
-        while (scanner.next(k, r)) {
-          Text rowKey = k.getRow();
-
-          for (Text columnKey : r.keySet()) {
-            byte[] value = r.get(columnKey);
-            String cellData = new String(value, HConstants.UTF8_ENCODING);
-            ConsoleTable.printLine(count, rowKey.toString(), columnKey.toString(),
-                cellData);
+          if (columns.contains(entry.getKey().toString()) || columns.contains("*")) {
+            ConsoleTable.printLine(count, this.rowKey.toString(), entry.getKey()
+                .toString(), cellData);
             count++;
           }
-          results = new TreeMap<Text, byte[]>();
         }
         ConsoleTable.selectFoot();
-        scanner.close();
-
-        break;
-
-      case 3:
-
-        byte[] rs1 = table.get(new Text(getRow()), new Text(getColumn()));
+      }
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
 
-        ConsoleTable.selectHead();
-        ConsoleTable.printLine(0, getRow(), getColumn(),
-          new String(rs1, HConstants.UTF8_ENCODING));
-        ConsoleTable.selectFoot();
+  private void scanPrint(HTable table, HBaseAdmin admin) {
+    HScannerInterface scan = null;
+    try {
+      if (this.timestamp == 0) {
+        scan = table.obtainScanner(getColumns(admin), this.rowKey);
+      } else {
+        scan = table.obtainScanner(getColumns(admin), this.rowKey, this.timestamp);
+      }
 
-        break;
+      HStoreKey key = new HStoreKey();
+      TreeMap<Text, byte[]> results = new TreeMap<Text, byte[]>();
 
-      case 4:
+      ConsoleTable.selectHead();
+      int count = 0;
 
-        byte[][] rs2 = table.get(new Text(getRow()), new Text(getColumn()), this.limit);
+      while (scan.next(key, results) && checkLimit(count)) {
+        Text rowKey = key.getRow();
 
-        ConsoleTable.selectHead();
-        for (int i = 0; i < rs2.length; i++) {
-          ConsoleTable.printLine(i, getRow(), getColumn(),
-            new String(rs2[i], HConstants.UTF8_ENCODING));
+        for (Text columnKey : results.keySet()) {
+          String cellData = new String(results.get(columnKey), HConstants.UTF8_ENCODING);
+          ConsoleTable.printLine(count, rowKey.toString(), columnKey.toString(), cellData);
         }
-        ConsoleTable.selectFoot();
-
-        break;
-
-      case 5:
+        count++;
+      }
+      ConsoleTable.selectFoot();
+      scan.close();
+    } catch (IOException e) {
+      e.printStackTrace();
+    }
+  }
 
-        byte[][] rs3 = table.get(new Text(getRow()), new Text(getColumn()), getTime(), this.limit);
+  public Text[] getColumns(HBaseAdmin admin) {
+    Text[] cols = null;
 
-        ConsoleTable.selectHead();
-        for (int i = 0; i < rs3.length; i++) {
-          ConsoleTable.printLine(i, getRow(), getColumn(), new String(rs3[i], HConstants.UTF8_ENCODING));
+    try {
+      if (this.columns.contains("*")) {
+        HTableDescriptor[] tables = admin.listTables();
+        if (this.tableName.equals(HConstants.ROOT_TABLE_NAME)
+            || this.tableName.equals(HConstants.META_TABLE_NAME)) {
+          cols = HConstants.COLUMN_FAMILY_ARRAY;
+        } else {
+          for (int i = 0; i < tables.length; i++) {
+            if (tables[i].getName().equals(this.tableName)) {
+              cols = tables[i].families().keySet().toArray(new Text[] {});
+            }
+          }
         }
-        ConsoleTable.selectFoot();
-
-        break;
-
+      } else {
+        List<Text> tmpList = new ArrayList<Text>();
+        for (int i = 0; i < this.columns.size(); i++) {
+          Text column = null;
+          if(this.columns.get(i).contains(":"))
+            column = new Text(this.columns.get(i));
+          else
+            column = new Text(this.columns.get(i) + ":");
+          
+          tmpList.add(column);
+        }
+        cols = tmpList.toArray(new Text[] {});
       }
-
-      return new ReturnMsg(1, "Successfully print out the selected data.");
     } catch (IOException e) {
-      String[] msg = e.getMessage().split("[,]");
-      return new ReturnMsg(0, msg[0]);
+      e.printStackTrace();
     }
+    return cols;
+  }
+
+  private boolean checkLimit(int count) {
+    return (this.limit == 0)? true: (this.limit > count) ? true : false;
   }
 
   public void setTable(String table) {
-    this.table = new Text(table);
+    this.tableName = new Text(table);
   }
 
   public void setLimit(int limit) {
     this.limit = limit;
   }
 
-  public void setCondition(Map<String, List<String>> cond) {
-    this.condition = cond;
+  public void setWhere(boolean isWhereClause) {
+    if (isWhereClause)
+      this.whereClause = true;
   }
 
-  public String getRow() {
-    return this.condition.get("row").get(1);
+  public void setTimestamp(String timestamp) {
+    this.timestamp = Long.parseLong(timestamp);
   }
 
-  public String getColumn() {
-    return this.condition.get("column").get(1);
+  public void setColumns(List<String> columns) {
+    this.columns = columns;
   }
 
-  public long getTime() {
-    return Long.parseLong(this.condition.get("time").get(1));
+  public void setRowKey(String rowKey) {
+    if(rowKey == null) 
+      this.rowKey = null; 
+    else
+      this.rowKey = new Text(rowKey);
   }
 
-  public int getConditionSize() {
-    return this.condition.size();
-  }
-
-  public int getCondition() {
-    int type = 0;
-    if (this.condition == null) {
-      type = 0;
-    } else if (this.condition.containsKey("row")) {
-      if (getConditionSize() == 1) {
-        type = 1;
-      } else if (this.condition.containsKey("column")) {
-        if (getConditionSize() == 2) {
-          if (this.limit == 0) {
-            type = 3;
-          } else {
-            type = 4;
-          }
-        } else {
-          type = 5;
-        }
-      }
-    } else if (this.condition.containsKey("column")) {
-      type = 2;
-    }
-    return type;
+  public void setVersion(int version) {
+    this.version = version;
   }
 }

Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/ShowCommand.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/ShowCommand.java?rev=575156&r1=575155&r2=575156&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/ShowCommand.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/ShowCommand.java Wed Sep 12 21:01:05 2007
@@ -25,6 +25,9 @@
 import org.apache.hadoop.hbase.HBaseAdmin;
 import org.apache.hadoop.hbase.HTableDescriptor;
 
+/**
+ * Shows all available tables.
+ */
 public class ShowCommand extends BasicCommand {
 
   private String command;
@@ -62,5 +65,4 @@
   public void setArgument(String argument) {
     this.command = argument;
   }
-
 }

Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java?rev=575156&r1=575155&r2=575156&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/Parser.java Wed Sep 12 21:01:05 2007
@@ -1,4 +1,6 @@
 /* Generated By:JavaCC: Do not edit this line. Parser.java */
+package org.apache.hadoop.hbase.shell.generated;
+
 /**
  * Copyright 2007 The Apache Software Foundation
  *
@@ -18,7 +20,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.hadoop.hbase.shell.generated;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -51,9 +52,11 @@
     Command statement = null;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case HELP:
+    case ALTER:
     case CLEAR:
     case SHOW:
     case DESCRIBE:
+    case DESC:
     case CREATE:
     case DROP:
     case FS:
@@ -61,12 +64,16 @@
     case INSERT:
     case DELETE:
     case SELECT:
-    case 37:
+    case ENABLE:
+    case DISABLE:
+    case 61:
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case HELP:
+      case ALTER:
       case CLEAR:
       case SHOW:
       case DESCRIBE:
+      case DESC:
       case CREATE:
       case DROP:
       case FS:
@@ -74,13 +81,15 @@
       case INSERT:
       case DELETE:
       case SELECT:
+      case ENABLE:
+      case DISABLE:
         statement = cmdStatement();
         break;
       default:
         jj_la1[0] = jj_gen;
         ;
       }
-      jj_consume_token(37);
+      jj_consume_token(61);
       break;
     case 0:
       jj_consume_token(0);
@@ -107,6 +116,7 @@
       cmd = showCommand();
       break;
     case DESCRIBE:
+    case DESC:
       cmd = descCommand();
       break;
     case CREATE:
@@ -115,6 +125,9 @@
     case DROP:
       cmd = dropCommand();
       break;
+    case ALTER:
+      cmd = alterCommand();
+      break;
     case INSERT:
       cmd = insertCommand();
       break;
@@ -124,6 +137,12 @@
     case SELECT:
       cmd = selectCommand();
       break;
+    case ENABLE:
+      cmd = enableCommand();
+      break;
+    case DISABLE:
+      cmd = disableCommand();
+      break;
     case CLEAR:
       cmd = clearCommand();
       break;
@@ -175,6 +194,7 @@
   String argument = "";
     jj_consume_token(HELP);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ALTER:
     case CLEAR:
     case SHOW:
     case DESCRIBE:
@@ -211,6 +231,9 @@
       case SELECT:
         t = jj_consume_token(SELECT);
         break;
+      case ALTER:
+        t = jj_consume_token(ALTER);
+        break;
       case CLEAR:
         t = jj_consume_token(CLEAR);
         break;
@@ -242,8 +265,9 @@
     jj_consume_token(SHOW);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case ID:
-    case QUOTED_STRING:
-      argument = getString();
+    case QUOTED_IDENTIFIER:
+    case STRING_LITERAL:
+      argument = Identifier();
       break;
     default:
       jj_la1[6] = jj_gen;
@@ -257,314 +281,430 @@
   final public DescCommand descCommand() throws ParseException {
   DescCommand desc = new DescCommand();
   String argument = null;
-    jj_consume_token(DESCRIBE);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ID:
-    case QUOTED_STRING:
-      argument = getString();
+    case DESCRIBE:
+      jj_consume_token(DESCRIBE);
+      break;
+    case DESC:
+      jj_consume_token(DESC);
       break;
     default:
       jj_la1[7] = jj_gen;
-      ;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    argument = Identifier();
+    desc.setArgument(argument);
+    {if (true) return desc;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public Map<String, Object> ColumnSpec() throws ParseException {
+  Map<String, Object> columnSpec = new HashMap<String, Object>();
+  int n = -1;
+  Token t = null;
+    label_2:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case MAX_VERSIONS:
+      case MAX_LENGTH:
+      case COMPRESSION:
+      case IN_MEMORY:
+      case BLOOMFILTER:
+      case VECTOR_SIZE:
+      case NUM_HASH:
+      case NUM_ENTRIES:
+        ;
+        break;
+      default:
+        jj_la1[8] = jj_gen;
+        break label_2;
+      }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case MAX_VERSIONS:
+        jj_consume_token(MAX_VERSIONS);
+        jj_consume_token(EQUALS);
+        n = Number();
+      columnSpec.put("MAX_VERSIONS", n);
+        break;
+      case MAX_LENGTH:
+        jj_consume_token(MAX_LENGTH);
+        jj_consume_token(EQUALS);
+        n = Number();
+      columnSpec.put("MAX_LENGTH", n);
+        break;
+      case COMPRESSION:
+        jj_consume_token(COMPRESSION);
+        jj_consume_token(EQUALS);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case NONE:
+          t = jj_consume_token(NONE);
+          break;
+        case BLOCK:
+          t = jj_consume_token(BLOCK);
+          break;
+        case RECORD:
+          t = jj_consume_token(RECORD);
+          break;
+        default:
+          jj_la1[9] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      columnSpec.put("COMPRESSION", t.image.toString());
+        break;
+      case IN_MEMORY:
+        jj_consume_token(IN_MEMORY);
+      columnSpec.put("IN_MEMORY", true);
+        break;
+      case BLOOMFILTER:
+        jj_consume_token(BLOOMFILTER);
+        jj_consume_token(EQUALS);
+        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+        case BLOOMFILTER:
+          t = jj_consume_token(BLOOMFILTER);
+          break;
+        case COUNTING_BLOOMFILTER:
+          t = jj_consume_token(COUNTING_BLOOMFILTER);
+          break;
+        case RETOUCHED_BLOOMFILTER:
+          t = jj_consume_token(RETOUCHED_BLOOMFILTER);
+          break;
+        default:
+          jj_la1[10] = jj_gen;
+          jj_consume_token(-1);
+          throw new ParseException();
+        }
+      columnSpec.put("BLOOMFILTER", t.image.toString());
+        break;
+      case VECTOR_SIZE:
+        jj_consume_token(VECTOR_SIZE);
+        jj_consume_token(EQUALS);
+        n = Number();
+      columnSpec.put("VECTOR_SIZE", n);
+        break;
+      case NUM_HASH:
+        jj_consume_token(NUM_HASH);
+        jj_consume_token(EQUALS);
+        n = Number();
+      columnSpec.put("NUM_HASH", n);
+        break;
+      case NUM_ENTRIES:
+        jj_consume_token(NUM_ENTRIES);
+        jj_consume_token(EQUALS);
+        n = Number();
+      columnSpec.put("NUM_ENTRIES", n);
+        break;
+      default:
+        jj_la1[11] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
     }
-      desc.setArgument(argument);
-      {if (true) return desc;}
+    {if (true) return columnSpec;}
     throw new Error("Missing return statement in function");
   }
 
   final public CreateCommand createCommand() throws ParseException {
-  CreateCommand create = new CreateCommand();
-  String argument = null;
-  List<String> columnfamilies = null;
-  int limit = 1;
+  CreateCommand createCommand = new CreateCommand();
+  String table = null;
+  Map<String, Object> columnSpec = null;
+  String column = null;
     jj_consume_token(CREATE);
-    argument = getString();
-         create.setTable(argument);
-    jj_consume_token(COLUMNFAMILIES);
-    columnfamilies = getLiteralValues();
-         create.setColumnfamilies(columnfamilies);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case LIMIT:
-      jj_consume_token(LIMIT);
-      jj_consume_token(EQUALS);
-      limit = getInt();
-            try{
-               create.setLimit(limit);
-            }catch(ClassCastException ce) {
-               {if (true) throw generateParseException();}
+    jj_consume_token(TABLE);
+    table = Identifier();
+    createCommand.setTable(table);
+    jj_consume_token(LPAREN);
+    column = Identifier();
+    columnSpec = ColumnSpec();
+    createCommand.addColumnSpec(column, columnSpec);
+    label_3:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[12] = jj_gen;
+        break label_3;
+      }
+      jj_consume_token(COMMA);
+      column = Identifier();
+      columnSpec = ColumnSpec();
+        createCommand.addColumnSpec(column, columnSpec);
+    }
+    jj_consume_token(RPAREN);
+    {if (true) return createCommand;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public AlterCommand alterCommand() throws ParseException {
+  AlterCommand alterCommand = new AlterCommand();
+  String table = null;
+  String column = null;
+  Map<String, Object> columnSpec = null;
+    jj_consume_token(ALTER);
+    jj_consume_token(TABLE);
+    table = Identifier();
+    alterCommand.setTable(table);
+    if (jj_2_1(2)) {
+      jj_consume_token(ADD);
+      column = Identifier();
+      columnSpec = ColumnSpec();
+         alterCommand.setOperationType(AlterCommand.OperationType.ADD);
+         alterCommand.addColumnSpec(column, columnSpec);
+    } else {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ADD:
+        jj_consume_token(ADD);
+        jj_consume_token(LPAREN);
+      alterCommand.setOperationType(AlterCommand.OperationType.ADD);
+        column = Identifier();
+        columnSpec = ColumnSpec();
+      alterCommand.addColumnSpec(column, columnSpec);
+        label_4:
+        while (true) {
+          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+          case COMMA:
+            ;
+            break;
+          default:
+            jj_la1[13] = jj_gen;
+            break label_4;
+          }
+          jj_consume_token(COMMA);
+          column = Identifier();
+          columnSpec = ColumnSpec();
+          alterCommand.addColumnSpec(column, columnSpec);
         }
-      break;
-    default:
-      jj_la1[8] = jj_gen;
-      ;
+        jj_consume_token(RPAREN);
+        break;
+      case DROP:
+        jj_consume_token(DROP);
+        column = Identifier();
+      alterCommand.setOperationType(AlterCommand.OperationType.DROP);
+      alterCommand.setColumn(column);
+        break;
+      case CHANGE:
+        jj_consume_token(CHANGE);
+        column = Identifier();
+        columnSpec = ColumnSpec();
+      alterCommand.setOperationType(AlterCommand.OperationType.CHANGE);
+      alterCommand.addColumnSpec(column, columnSpec);
+        break;
+      default:
+        jj_la1[14] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
     }
-    {if (true) return create;}
+    {if (true) return alterCommand;}
     throw new Error("Missing return statement in function");
   }
 
   final public DropCommand dropCommand() throws ParseException {
   DropCommand drop = new DropCommand();
-  String argument = null;
+  List<String> tableList = null;
     jj_consume_token(DROP);
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ID:
-    case QUOTED_STRING:
-      argument = getString();
-      break;
-    default:
-      jj_la1[9] = jj_gen;
-      ;
-    }
-      drop.setArgument(argument);
-      {if (true) return drop;}
+    jj_consume_token(TABLE);
+    tableList = TableList();
+     drop.setTableList(tableList);
+     {if (true) return drop;}
     throw new Error("Missing return statement in function");
   }
 
   final public InsertCommand insertCommand() throws ParseException {
-    InsertCommand in = new InsertCommand();
-    Map<String, List<String>> cond = null;
-    List<String> columnfamilies = null;
-    List<String> values = null;
-    String table = null;
+  InsertCommand in = new InsertCommand();
+  List<String> columnfamilies = null;
+  List<String> values = null;
+  String table = null;
+  Token t = null;
     jj_consume_token(INSERT);
-    table = getString();
-         in.setTable(table);
-    columnfamilies = getLiteralValues();
-        in.setColumnfamilies(columnfamilies);
+    jj_consume_token(INTO);
+    table = Identifier();
+     in.setTable(table);
+    columnfamilies = getColumns();
+     in.setColumnfamilies(columnfamilies);
     jj_consume_token(VALUES);
     values = getLiteralValues();
-        in.setValues(values);
+     in.setValues(values);
     jj_consume_token(WHERE);
-    cond = WhereClause();
-        try{
-           in.setCondition(cond);
-        }catch(ClassCastException ce) {
-           {if (true) throw generateParseException();}
-        }
-       {if (true) return in;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public DeleteCommand deleteCommand() throws ParseException {
-    DeleteCommand del = new DeleteCommand();
-    Map<String, List<String>> cond = null;
-    String argument = null;
-    jj_consume_token(DELETE);
-    argument = getString();
-         del.setTable(argument);
-    jj_consume_token(WHERE);
-    cond = WhereClause();
-        try{
-           del.setCondition(cond);
-        }catch(ClassCastException ce) {
-            {if (true) throw generateParseException();}
-       }
-       {if (true) return del;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public SelectCommand selectCommand() throws ParseException {
-    SelectCommand select = new SelectCommand();
-    Map<String, List<String>> cond = null;
-    String argument = null;
-    int limit;
-    jj_consume_token(SELECT);
-    argument = getString();
-         select.setTable(argument);
+    jj_consume_token(ROW);
+    jj_consume_token(EQUALS);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case WHERE:
-      jj_consume_token(WHERE);
-      cond = WhereClause();
-        try{
-           select.setCondition(cond);
-        }catch(ClassCastException ce) {
-            {if (true) throw generateParseException();}
-        }
+    case STRING_LITERAL:
+      t = jj_consume_token(STRING_LITERAL);
       break;
-    default:
-      jj_la1[10] = jj_gen;
-      ;
-    }
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case LIMIT:
-      jj_consume_token(LIMIT);
-      jj_consume_token(EQUALS);
-      limit = getInt();
-            try{
-               select.setLimit(limit);
-            }catch(ClassCastException ce) {
-               {if (true) throw generateParseException();}
-        }
+    case QUOTED_IDENTIFIER:
+      t = jj_consume_token(QUOTED_IDENTIFIER);
       break;
     default:
-      jj_la1[11] = jj_gen;
-      ;
+      jj_la1[15] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
     }
-    {if (true) return select;}
+     in.setRow(t.image.substring(1, t.image.length()-1));
+    {if (true) return in;}
     throw new Error("Missing return statement in function");
   }
 
-  final public ClearCommand clearCommand() throws ParseException {
-  ClearCommand clear = new ClearCommand();
-    jj_consume_token(CLEAR);
-              {if (true) return clear;}
-    throw new Error("Missing return statement in function");
-  }
-
-/**
-* TODO : expressions codes need more love.
-*/
-  final public String getString() throws ParseException {
+  final public DeleteCommand deleteCommand() throws ParseException {
+  DeleteCommand deleteCommand = new DeleteCommand();
+  List<String> columnList = null;
   Token t = null;
+  String table = null;
+    jj_consume_token(DELETE);
+    columnList = ColumnList();
+    deleteCommand.setColumnList(columnList);
+    jj_consume_token(FROM);
+    table = Identifier();
+    deleteCommand.setTable(table);
+    jj_consume_token(WHERE);
+    jj_consume_token(ROW);
+    jj_consume_token(EQUALS);
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ID:
-      t = jj_consume_token(ID);
+    case STRING_LITERAL:
+      t = jj_consume_token(STRING_LITERAL);
       break;
-    case QUOTED_STRING:
-      t = jj_consume_token(QUOTED_STRING);
+    case QUOTED_IDENTIFIER:
+      t = jj_consume_token(QUOTED_IDENTIFIER);
       break;
     default:
-      jj_la1[12] = jj_gen;
+      jj_la1[16] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
-      {if (true) return t.image.toString();}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public int getInt() throws ParseException {
-  Token t = null;
-    t = jj_consume_token(NUM);
-     {if (true) return Integer.parseInt(t.image.toString());}
+    deleteCommand.setRow(t.image.substring(1, t.image.length()-1));
+    {if (true) return deleteCommand;}
     throw new Error("Missing return statement in function");
   }
 
-  final public Map<String, List<String>> WhereClause() throws ParseException {
-    Map<String, List<String>> result =
-               new HashMap<String, List<String>>();
-    List<String> exception =
-               new ArrayList<String>();
-      try{
-        result.putAll(ConditionExpression());
-      }catch(ParseException pe) {
-        exception.add(pe.toString());
-        result.put("error", exception);
-      }
-    label_2:
-    while (true) {
+  final public SelectCommand selectCommand() throws ParseException {
+  SelectCommand select = new SelectCommand();
+  List<String> columns = null;
+  String rowKey = "";
+  String timestamp = null;
+  int numVersion = 0;
+  String tableName = null;
+  int limit;
+    jj_consume_token(SELECT);
+    columns = ColumnList();
+    jj_consume_token(FROM);
+    tableName = Identifier();
+     select.setColumns(columns);
+     select.setTable(tableName);
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case STARTING:
+    case WHERE:
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case AND:
-        ;
+      case WHERE:
+        jj_consume_token(WHERE);
+        jj_consume_token(ROW);
+        jj_consume_token(EQUALS);
+       select.setWhere(true);
+        break;
+      case STARTING:
+        jj_consume_token(STARTING);
+        jj_consume_token(FROM);
         break;
       default:
-        jj_la1[13] = jj_gen;
-        break label_2;
-      }
-      jj_consume_token(AND);
-      try{
-        result.putAll(ConditionExpression());
-      }catch(ParseException pe) {
-        exception.add(pe.toString());
-        result.put("error", exception);
+        jj_la1[17] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
       }
-    }
-   {if (true) return result;}
-    throw new Error("Missing return statement in function");
-  }
-
-  final public Map<String, List<String>> ConditionExpression() throws ParseException {
-    Token tSearchName, tComparator, tComparand;
-    Map<String, List<String>> tmp =
-               new HashMap<String, List<String>>();
-    List<String> values =
-               new ArrayList<String>();
-    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case ROW:
-      tSearchName = jj_consume_token(ROW);
-      break;
-    case COLUMN:
-      tSearchName = jj_consume_token(COLUMN);
-      break;
-    case TIME:
-      tSearchName = jj_consume_token(TIME);
-      break;
-    case ID:
-      tSearchName = jj_consume_token(ID);
-      break;
-    case VALUES:
-      tSearchName = jj_consume_token(VALUES);
-      break;
-    case COLUMNFAMILIES:
-      tSearchName = jj_consume_token(COLUMNFAMILIES);
+      rowKey = getStringLiteral();
+       select.setRowKey(rowKey);
       break;
     default:
-      jj_la1[14] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
+      jj_la1[18] = jj_gen;
+      ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case EQUALS:
-      tComparator = jj_consume_token(EQUALS);
-      break;
-    case NOTEQUAL:
-      tComparator = jj_consume_token(NOTEQUAL);
+    case TIMESTAMP:
+      jj_consume_token(TIMESTAMP);
+      timestamp = getStringLiteral();
+       select.setTimestamp(timestamp);
       break;
     default:
-      jj_la1[15] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
+      jj_la1[19] = jj_gen;
+      ;
     }
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-    case QUOTED_STRING:
-      tComparand = jj_consume_token(QUOTED_STRING);
-          values.add("quoted string");
-          tmp.put("error", values);
-          {if (true) return tmp;}
+    case NUM_VERSIONS:
+      jj_consume_token(NUM_VERSIONS);
+      numVersion = Number();
+        select.setVersion(numVersion);
       break;
-    case STRING_LITERAL:
-      tComparand = jj_consume_token(STRING_LITERAL);
-    values.add(tComparator.image);
-    values.add(tComparand.image.substring(1,tComparand.image.length() - 1));
-
-  if(tSearchName.image.toString().equals("row") ||
-  tSearchName.image.toString().equals("column") ||
-  tSearchName.image.toString().equals("time"))
-    { tmp.put(tSearchName.image, values); }
-  else
-    {
-    values.add(tSearchName.image.toString());
-    tmp.put("error", values);
+    default:
+      jj_la1[20] = jj_gen;
+      ;
     }
-
-    {if (true) return tmp;}
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case LIMIT:
+      jj_consume_token(LIMIT);
+      jj_consume_token(EQUALS);
+      limit = Number();
+      try{
+        select.setLimit(limit);
+      }catch(ClassCastException ce) {
+        {if (true) throw generateParseException();}
+      }
       break;
     default:
-      jj_la1[16] = jj_gen;
-      jj_consume_token(-1);
-      throw new ParseException();
+      jj_la1[21] = jj_gen;
+      ;
     }
+    {if (true) return select;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public EnableCommand enableCommand() throws ParseException {
+  EnableCommand enableCommand = new EnableCommand();
+  String table = null;
+    jj_consume_token(ENABLE);
+    table = Identifier();
+    enableCommand.setTable(table);
+    {if (true) return enableCommand;}
     throw new Error("Missing return statement in function");
   }
 
+  final public DisableCommand disableCommand() throws ParseException {
+  DisableCommand disableCommand = new DisableCommand();
+  String table = null;
+    jj_consume_token(DISABLE);
+    table = Identifier();
+    disableCommand.setTable(table);
+    {if (true) return disableCommand;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public ClearCommand clearCommand() throws ParseException {
+  ClearCommand clear = new ClearCommand();
+    jj_consume_token(CLEAR);
+     {if (true) return clear;}
+    throw new Error("Missing return statement in function");
+  }
+
+////////////////////////////////////////////////
+// Utility expansion units...
   final public List<String> getLiteralValues() throws ParseException {
-    List<String> values = new ArrayList<String>();
-    String literal = null;
+  List<String> values = new ArrayList<String>();
+  String literal = null;
     jj_consume_token(LPAREN);
    literal = getStringLiteral();
  if(literal != null) values.add(literal);
-    label_3:
+    label_5:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
       case ID:
-      case STRING:
-      case QUOTED_STRING:
+      case QUOTED_IDENTIFIER:
       case STRING_LITERAL:
         ;
         break;
       default:
-        jj_la1[17] = jj_gen;
-        break label_3;
+        jj_la1[22] = jj_gen;
+        break label_5;
       }
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case COMMA:
@@ -573,8 +713,7 @@
    if(literal != null) values.add(literal);
         break;
       case ID:
-      case STRING:
-      case QUOTED_STRING:
+      case QUOTED_IDENTIFIER:
       case STRING_LITERAL:
         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
         case ID:
@@ -583,21 +722,18 @@
         case STRING_LITERAL:
           jj_consume_token(STRING_LITERAL);
           break;
-        case QUOTED_STRING:
-          jj_consume_token(QUOTED_STRING);
-          break;
-        case STRING:
-          jj_consume_token(STRING);
+        case QUOTED_IDENTIFIER:
+          jj_consume_token(QUOTED_IDENTIFIER);
           break;
         default:
-          jj_la1[18] = jj_gen;
+          jj_la1[23] = jj_gen;
           jj_consume_token(-1);
           throw new ParseException();
         }
        values.removeAll(values);
         break;
       default:
-        jj_la1[19] = jj_gen;
+        jj_la1[24] = jj_gen;
         jj_consume_token(-1);
         throw new ParseException();
       }
@@ -608,30 +744,228 @@
   }
 
   final public String getStringLiteral() throws ParseException {
-    Token stringLiteral;
+  Token s;
     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
     case STRING_LITERAL:
-      stringLiteral = jj_consume_token(STRING_LITERAL);
-   {if (true) return stringLiteral.image.substring(1,stringLiteral.image.length() - 1);}
+      s = jj_consume_token(STRING_LITERAL);
       break;
-    case QUOTED_STRING:
-      jj_consume_token(QUOTED_STRING);
-                     {if (true) return null;}
+    case QUOTED_IDENTIFIER:
+      s = jj_consume_token(QUOTED_IDENTIFIER);
       break;
     default:
-      jj_la1[20] = jj_gen;
+      jj_la1[25] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+   String value = s.image.toString();
+   {if (true) return value.substring(1,value.length() - 1);}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public List<String> getColumns() throws ParseException {
+  List<String> values = new ArrayList<String>();
+  String literal = null;
+    jj_consume_token(LPAREN);
+   literal = getColumn();
+ if(literal != null) values.add(literal);
+    label_6:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[26] = jj_gen;
+        break label_6;
+      }
+      jj_consume_token(COMMA);
+        literal = getColumn();
+        if(literal != null) values.add(literal);
+    }
+    jj_consume_token(RPAREN);
+     {if (true) return values;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String getColumn() throws ParseException {
+  Token col;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ASTERISK:
+    case ID:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case ID:
+        col = jj_consume_token(ID);
+        break;
+      case ASTERISK:
+        col = jj_consume_token(ASTERISK);
+        break;
+      default:
+        jj_la1[27] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        {if (true) return col.image.toString();}
+      break;
+    case QUOTED_IDENTIFIER:
+    case STRING_LITERAL:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case QUOTED_IDENTIFIER:
+        col = jj_consume_token(QUOTED_IDENTIFIER);
+        break;
+      case STRING_LITERAL:
+        col = jj_consume_token(STRING_LITERAL);
+        break;
+      default:
+        jj_la1[28] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+        {if (true) return col.image.substring(1,col.image.toString().length() - 1);}
+      break;
+    default:
+      jj_la1[29] = jj_gen;
       jj_consume_token(-1);
       throw new ParseException();
     }
     throw new Error("Missing return statement in function");
   }
 
+  final public List<String> TableList() throws ParseException {
+  List<String> tableList = new ArrayList<String>();
+  String table = null;
+    table = Identifier();
+                         tableList.add(table);
+    label_7:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[30] = jj_gen;
+        break label_7;
+      }
+      jj_consume_token(COMMA);
+      table = Identifier();
+      tableList.add(table);
+    }
+    {if (true) return tableList;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public List<String> ColumnList() throws ParseException {
+  List<String> columnList = new ArrayList<String>();
+  String column = null;
+    column = getColumn();
+      if(column != null) {
+        columnList.add(column);
+      } else {
+        {if (true) return columnList;}
+      }
+    label_8:
+    while (true) {
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case COMMA:
+        ;
+        break;
+      default:
+        jj_la1[31] = jj_gen;
+        break label_8;
+      }
+      jj_consume_token(COMMA);
+      column = getColumn();
+      columnList.add(column);
+    }
+    {if (true) return columnList;}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public int Number() throws ParseException {
+  Token t = null;
+    t = jj_consume_token(INTEGER_LITERAL);
+    {if (true) return Integer.parseInt(t.image.toString());}
+    throw new Error("Missing return statement in function");
+  }
+
+  final public String Identifier() throws ParseException {
+  Token t = null;
+    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+    case ID:
+      t = jj_consume_token(ID);
+       {if (true) return t.image.toString();}
+      break;
+    case QUOTED_IDENTIFIER:
+    case STRING_LITERAL:
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case QUOTED_IDENTIFIER:
+        t = jj_consume_token(QUOTED_IDENTIFIER);
+        break;
+      case STRING_LITERAL:
+        t = jj_consume_token(STRING_LITERAL);
+        break;
+      default:
+        jj_la1[32] = jj_gen;
+        jj_consume_token(-1);
+        throw new ParseException();
+      }
+       {if (true) return t.image.substring(1,t.image.toString().length() - 1);}
+      break;
+    default:
+      jj_la1[33] = jj_gen;
+      jj_consume_token(-1);
+      throw new ParseException();
+    }
+    throw new Error("Missing return statement in function");
+  }
+
+  final private boolean jj_2_1(int xla) {
+    jj_la = xla; jj_lastpos = jj_scanpos = token;
+    try { return !jj_3_1(); }
+    catch(LookaheadSuccess ls) { return true; }
+    finally { jj_save(0, xla); }
+  }
+
+  final private boolean jj_3R_9() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_3R_10()) {
+    jj_scanpos = xsp;
+    if (jj_3R_11()) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3_1() {
+    if (jj_scan_token(ADD)) return true;
+    if (jj_3R_9()) return true;
+    return false;
+  }
+
+  final private boolean jj_3R_11() {
+    Token xsp;
+    xsp = jj_scanpos;
+    if (jj_scan_token(59)) {
+    jj_scanpos = xsp;
+    if (jj_scan_token(60)) return true;
+    }
+    return false;
+  }
+
+  final private boolean jj_3R_10() {
+    if (jj_scan_token(ID)) return true;
+    return false;
+  }
+
   public ParserTokenManager token_source;
   SimpleCharStream jj_input_stream;
   public Token token, jj_nt;
   private int jj_ntk;
+  private Token jj_scanpos, jj_lastpos;
+  private int jj_la;
+  public boolean lookingAhead = false;
+  private boolean jj_semLA;
   private int jj_gen;
-  final private int[] jj_la1 = new int[21];
+  final private int[] jj_la1 = new int[34];
   static private int[] jj_la1_0;
   static private int[] jj_la1_1;
   static {
@@ -639,11 +973,14 @@
       jj_la1_1();
    }
    private static void jj_la1_0() {
-      jj_la1_0 = new int[] {0xffe0,0xffe1,0xffe0,0x0,0xffc0,0xffc0,0x0,0x0,0x400000,0x0,0x200000,0x400000,0x0,0x800000,0x1f0000,0x60000000,0x0,0x2000000,0x0,0x2000000,0x0,};
+      jj_la1_0 = new int[] {0x3cffe0,0x3cffe1,0x3cffe0,0x0,0xcfbc0,0xcfbc0,0x0,0x600,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0xc00000,0xc00000,0x10000000,0x20000000,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
    }
    private static void jj_la1_1() {
-      jj_la1_1 = new int[] {0x0,0x20,0x0,0x1,0x1,0x1,0x9,0x9,0x0,0x9,0x0,0x0,0x9,0x0,0x1,0x0,0x18,0x1d,0x1d,0x1d,0x18,};
+      jj_la1_1 = new int[] {0x0,0x20000000,0x0,0x800000,0x800000,0x800000,0x18800000,0x0,0x1cc700,0x3800,0x38000,0x1cc700,0x2,0x2,0x600000,0x18000000,0x18000000,0x0,0x0,0x0,0x0,0x0,0x18800002,0x18800000,0x18800002,0x18000000,0x2,0x800080,0x18000000,0x18800080,0x2,0x2,0x18000000,0x18800000,};
    }
+  final private JJCalls[] jj_2_rtns = new JJCalls[1];
+  private boolean jj_rescan = false;
+  private int jj_gc = 0;
 
   public Parser(java.io.InputStream stream) {
      this(stream, null);
@@ -654,7 +991,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   public void ReInit(java.io.InputStream stream) {
@@ -666,7 +1004,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   public Parser(java.io.Reader stream) {
@@ -675,7 +1014,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   public void ReInit(java.io.Reader stream) {
@@ -684,7 +1024,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   public Parser(ParserTokenManager tm) {
@@ -692,7 +1033,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   public void ReInit(ParserTokenManager tm) {
@@ -700,7 +1042,8 @@
     token = new Token();
     jj_ntk = -1;
     jj_gen = 0;
-    for (int i = 0; i < 21; i++) jj_la1[i] = -1;
+    for (int i = 0; i < 34; i++) jj_la1[i] = -1;
+    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
   }
 
   final private Token jj_consume_token(int kind) throws ParseException {
@@ -710,6 +1053,16 @@
     jj_ntk = -1;
     if (token.kind == kind) {
       jj_gen++;
+      if (++jj_gc > 100) {
+        jj_gc = 0;
+        for (int i = 0; i < jj_2_rtns.length; i++) {
+          JJCalls c = jj_2_rtns[i];
+          while (c != null) {
+            if (c.gen < jj_gen) c.first = null;
+            c = c.next;
+          }
+        }
+      }
       return token;
     }
     token = oldToken;
@@ -717,6 +1070,29 @@
     throw generateParseException();
   }
 
+  static private final class LookaheadSuccess extends java.lang.Error { }
+  final private LookaheadSuccess jj_ls = new LookaheadSuccess();
+  final private boolean jj_scan_token(int kind) {
+    if (jj_scanpos == jj_lastpos) {
+      jj_la--;
+      if (jj_scanpos.next == null) {
+        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+      } else {
+        jj_lastpos = jj_scanpos = jj_scanpos.next;
+      }
+    } else {
+      jj_scanpos = jj_scanpos.next;
+    }
+    if (jj_rescan) {
+      int i = 0; Token tok = token;
+      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+      if (tok != null) jj_add_error_token(kind, i);
+    }
+    if (jj_scanpos.kind != kind) return true;
+    if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
+    return false;
+  }
+
   final public Token getNextToken() {
     if (token.next != null) token = token.next;
     else token = token.next = token_source.getNextToken();
@@ -726,7 +1102,7 @@
   }
 
   final public Token getToken(int index) {
-    Token t = token;
+    Token t = lookingAhead ? jj_scanpos : token;
     for (int i = 0; i < index; i++) {
       if (t.next != null) t = t.next;
       else t = t.next = token_source.getNextToken();
@@ -744,18 +1120,48 @@
   private java.util.Vector jj_expentries = new java.util.Vector();
   private int[] jj_expentry;
   private int jj_kind = -1;
+  private int[] jj_lasttokens = new int[100];
+  private int jj_endpos;
+
+  private void jj_add_error_token(int kind, int pos) {
+    if (pos >= 100) return;
+    if (pos == jj_endpos + 1) {
+      jj_lasttokens[jj_endpos++] = kind;
+    } else if (jj_endpos != 0) {
+      jj_expentry = new int[jj_endpos];
+      for (int i = 0; i < jj_endpos; i++) {
+        jj_expentry[i] = jj_lasttokens[i];
+      }
+      boolean exists = false;
+      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
+        int[] oldentry = (int[])(e.nextElement());
+        if (oldentry.length == jj_expentry.length) {
+          exists = true;
+          for (int i = 0; i < jj_expentry.length; i++) {
+            if (oldentry[i] != jj_expentry[i]) {
+              exists = false;
+              break;
+            }
+          }
+          if (exists) break;
+        }
+      }
+      if (!exists) jj_expentries.addElement(jj_expentry);
+      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+    }
+  }
 
   public ParseException generateParseException() {
     jj_expentries.removeAllElements();
-    boolean[] la1tokens = new boolean[38];
-    for (int i = 0; i < 38; i++) {
+    boolean[] la1tokens = new boolean[62];
+    for (int i = 0; i < 62; i++) {
       la1tokens[i] = false;
     }
     if (jj_kind >= 0) {
       la1tokens[jj_kind] = true;
       jj_kind = -1;
     }
-    for (int i = 0; i < 21; i++) {
+    for (int i = 0; i < 34; i++) {
       if (jj_la1[i] == jj_gen) {
         for (int j = 0; j < 32; j++) {
           if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -767,13 +1173,16 @@
         }
       }
     }
-    for (int i = 0; i < 38; i++) {
+    for (int i = 0; i < 62; i++) {
       if (la1tokens[i]) {
         jj_expentry = new int[1];
         jj_expentry[0] = i;
         jj_expentries.addElement(jj_expentry);
       }
     }
+    jj_endpos = 0;
+    jj_rescan_token();
+    jj_add_error_token(0, 0);
     int[][] exptokseq = new int[jj_expentries.size()][];
     for (int i = 0; i < jj_expentries.size(); i++) {
       exptokseq[i] = (int[])jj_expentries.elementAt(i);
@@ -785,6 +1194,41 @@
   }
 
   final public void disable_tracing() {
+  }
+
+  final private void jj_rescan_token() {
+    jj_rescan = true;
+    for (int i = 0; i < 1; i++) {
+    try {
+      JJCalls p = jj_2_rtns[i];
+      do {
+        if (p.gen > jj_gen) {
+          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+          switch (i) {
+            case 0: jj_3_1(); break;
+          }
+        }
+        p = p.next;
+      } while (p != null);
+      } catch(LookaheadSuccess ls) { }
+    }
+    jj_rescan = false;
+  }
+
+  final private void jj_save(int index, int xla) {
+    JJCalls p = jj_2_rtns[index];
+    while (p.gen > jj_gen) {
+      if (p.next == null) { p = p.next = new JJCalls(); break; }
+      p = p.next;
+    }
+    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+  }
+
+  static final class JJCalls {
+    int gen;
+    Token first;
+    int arg;
+    JJCalls next;
   }
 
 }

Modified: lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java
URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java?rev=575156&r1=575155&r2=575156&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java (original)
+++ lucene/hadoop/trunk/src/contrib/hbase/src/java/org/apache/hadoop/hbase/shell/generated/ParserConstants.java Wed Sep 12 21:01:05 2007
@@ -1,60 +1,65 @@
 /* Generated By:JavaCC: Do not edit this line. ParserConstants.java */
-/**
- * Copyright 2007 The Apache Software Foundation
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 package org.apache.hadoop.hbase.shell.generated;
 
 public interface ParserConstants {
 
   int EOF = 0;
   int HELP = 5;
-  int CLEAR = 6;
-  int SHOW = 7;
-  int DESCRIBE = 8;
-  int CREATE = 9;
-  int DROP = 10;
-  int FS = 11;
-  int EXIT = 12;
-  int INSERT = 13;
-  int DELETE = 14;
-  int SELECT = 15;
-  int ROW = 16;
-  int COLUMN = 17;
-  int TIME = 18;
-  int VALUES = 19;
-  int COLUMNFAMILIES = 20;
-  int WHERE = 21;
-  int LIMIT = 22;
-  int AND = 23;
-  int OR = 24;
-  int COMMA = 25;
-  int DOT = 26;
-  int LPAREN = 27;
-  int RPAREN = 28;
-  int EQUALS = 29;
-  int NOTEQUAL = 30;
-  int OPTIONS = 31;
-  int ID = 32;
-  int NUM = 33;
-  int STRING = 34;
-  int QUOTED_STRING = 35;
-  int STRING_LITERAL = 36;
+  int ALTER = 6;
+  int CLEAR = 7;
+  int SHOW = 8;
+  int DESCRIBE = 9;
+  int DESC = 10;
+  int CREATE = 11;
+  int DROP = 12;
+  int FS = 13;
+  int EXIT = 14;
+  int INSERT = 15;
+  int INTO = 16;
+  int TABLE = 17;
+  int DELETE = 18;
+  int SELECT = 19;
+  int ENABLE = 20;
+  int DISABLE = 21;
+  int STARTING = 22;
+  int WHERE = 23;
+  int FROM = 24;
+  int ROW = 25;
+  int VALUES = 26;
+  int COLUMNFAMILIES = 27;
+  int TIMESTAMP = 28;
+  int NUM_VERSIONS = 29;
+  int LIMIT = 30;
+  int AND = 31;
+  int OR = 32;
+  int COMMA = 33;
+  int DOT = 34;
+  int LPAREN = 35;
+  int RPAREN = 36;
+  int EQUALS = 37;
+  int NOTEQUAL = 38;
+  int ASTERISK = 39;
+  int MAX_VERSIONS = 40;
+  int MAX_LENGTH = 41;
+  int COMPRESSION = 42;
+  int NONE = 43;
+  int BLOCK = 44;
+  int RECORD = 45;
+  int IN_MEMORY = 46;
+  int BLOOMFILTER = 47;
+  int COUNTING_BLOOMFILTER = 48;
+  int RETOUCHED_BLOOMFILTER = 49;
+  int VECTOR_SIZE = 50;
+  int NUM_HASH = 51;
+  int NUM_ENTRIES = 52;
+  int ADD = 53;
+  int CHANGE = 54;
+  int ID = 55;
+  int INTEGER_LITERAL = 56;
+  int FLOATING_POINT_LITERAL = 57;
+  int EXPONENT = 58;
+  int QUOTED_IDENTIFIER = 59;
+  int STRING_LITERAL = 60;
 
   int DEFAULT = 0;
 
@@ -65,22 +70,30 @@
     "\"\\r\"",
     "\"\\n\"",
     "\"help\"",
+    "\"alter\"",
     "\"clear\"",
     "\"show\"",
     "\"describe\"",
+    "\"desc\"",
     "\"create\"",
     "\"drop\"",
     "\"fs\"",
     "\"exit\"",
     "\"insert\"",
+    "\"into\"",
+    "\"table\"",
     "\"delete\"",
     "\"select\"",
+    "\"enable\"",
+    "\"disable\"",
+    "\"starting\"",
+    "\"where\"",
+    "\"from\"",
     "\"row\"",
-    "\"column\"",
-    "\"time\"",
     "\"values\"",
     "\"columnfamilies\"",
-    "\"where\"",
+    "\"timestamp\"",
+    "\"num_versions\"",
     "\"limit\"",
     "\"and\"",
     "\"or\"",
@@ -90,11 +103,27 @@
     "\")\"",
     "\"=\"",
     "\"<>\"",
-    "\"-\"",
+    "\"*\"",
+    "\"max_versions\"",
+    "\"max_length\"",
+    "\"compression\"",
+    "\"none\"",
+    "\"block\"",
+    "\"record\"",
+    "\"in_memory\"",
+    "\"bloomfilter\"",
+    "\"counting_bloomfilter\"",
+    "\"retouched_bloomfilter\"",
+    "\"vector_size\"",
+    "\"num_hash\"",
+    "\"num_entries\"",
+    "\"add\"",
+    "\"change\"",
     "<ID>",
-    "<NUM>",
-    "<STRING>",
-    "<QUOTED_STRING>",
+    "<INTEGER_LITERAL>",
+    "<FLOATING_POINT_LITERAL>",
+    "<EXPONENT>",
+    "<QUOTED_IDENTIFIER>",
     "<STRING_LITERAL>",
     "\";\"",
   };