You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/06/17 23:07:50 UTC
svn commit: r668830 - in /hadoop/hbase/trunk: CHANGES.txt
src/java/org/apache/hadoop/hbase/HTableDescriptor.java
src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Author: stack
Date: Tue Jun 17 14:07:50 2008
New Revision: 668830
URL: http://svn.apache.org/viewvc?rev=668830&view=rev
Log:
HBASE-691 get* and getScanner are different in how they treat column parameter
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=668830&r1=668829&r2=668830&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Tue Jun 17 14:07:50 2008
@@ -54,6 +54,7 @@
reading performance after break it (LN via Stack)
HBASE-686 MemcacheScanner didn't return the first row(if it exists),
because HScannerInterface's output incorrect (LN via Jim Kellerman)
+ HBASE-691 get* and getScanner are different in how they treat column parameter
IMPROVEMENTS
HBASE-559 MR example job to count table rows
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=668830&r1=668829&r2=668830&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java Tue Jun 17 14:07:50 2008
@@ -178,7 +178,16 @@
* @return true if the table contains the specified family name
*/
public boolean hasFamily(final byte [] c) {
- int index = HStoreKey.getFamilyDelimiterIndex(c);
+ return hasFamily(c, HStoreKey.getFamilyDelimiterIndex(c));
+ }
+
+ /**
+ * Checks to see if this table contains the given column family
+ * @param c Family name or column name.
+ * @param index Index to column family delimiter
+ * @return true if the table contains the specified family name
+ */
+ public boolean hasFamily(final byte [] c, final int index) {
// If index is -1, then presume we were passed a column family name minus
// the colon delimiter.
return families.containsKey(Bytes.mapKey(c, index == -1? c.length: index));
@@ -191,7 +200,7 @@
*/
@Override
public String toString() {
- return HColumnDescriptor.NAME + " => '" + Bytes.toString(this.name) +
+ return HConstants.NAME + " => '" + Bytes.toString(this.name) +
"', " + FAMILIES + " => " + this.families.values();
}
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=668830&r1=668829&r2=668830&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Tue Jun 17 14:07:50 2008
@@ -43,6 +43,7 @@
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hbase.ColumnNameParseException;
import org.apache.hadoop.hbase.DroppedSnapshotException;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
@@ -1141,6 +1142,12 @@
public Map<byte [], Cell> getFull(final byte [] row,
final Set<byte []> columns, final long ts)
throws IOException {
+ // Check columns passed
+ if (columns != null) {
+ for (byte [] column: columns) {
+ checkColumn(column);
+ }
+ }
HStoreKey key = new HStoreKey(row, ts);
Integer lid = obtainRowLock(row);
try {
@@ -1603,11 +1610,18 @@
* @throws NoSuchColumnFamilyException
*/
private void checkColumn(final byte [] columnName)
- throws NoSuchColumnFamilyException {
+ throws NoSuchColumnFamilyException, ColumnNameParseException {
if (columnName == null) {
return;
}
- if (!regionInfo.getTableDesc().hasFamily(columnName)) {
+
+ int index = HStoreKey.getFamilyDelimiterIndex(columnName);
+ if (index <= 0) {
+ throw new ColumnNameParseException(Bytes.toString(columnName) +
+ " is missing column family delimiter '" +
+ HStoreKey.COLUMN_FAMILY_DELIMITER + "'");
+ }
+ if (!regionInfo.getTableDesc().hasFamily(columnName, index)) {
throw new NoSuchColumnFamilyException("Column family on " +
Bytes.toString(columnName) + " does not exist in region " + this
+ " in table " + regionInfo.getTableDesc());
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=668830&r1=668829&r2=668830&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Tue Jun 17 14:07:50 2008
@@ -993,8 +993,7 @@
/** {@inheritDoc} */
public HRegionInfo getRegionInfo(final byte [] regionName)
- throws NotServingRegionException {
-
+ throws NotServingRegionException {
requestCount.incrementAndGet();
return getRegion(regionName).getRegionInfo();
}
@@ -1006,7 +1005,7 @@
checkOpen();
requestCount.incrementAndGet();
try {
- return getRegion(regionName).get(row, column);
+ return getRegion(regionName).get(row, column);
} catch (IOException e) {
checkFileSystem();
throw e;