FAQ
Author: namit
Date: Tue Dec 7 06:48:47 2010
New Revision: 1042920

URL: http://svn.apache.org/viewvc?rev=1042920&view=rev
Log:
HIVE-1828 No need to get Table/Partition for show locks.
(He Yongqiang via namit)


Added:
hive/trunk/ql/src/test/queries/clientnegative/lockneg5.q
hive/trunk/ql/src/test/results/clientnegative/lockneg5.q.out
Modified:
hive/trunk/CHANGES.txt
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockManager.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
hive/trunk/ql/src/test/queries/clientpositive/lock1.q
hive/trunk/ql/src/test/results/clientpositive/lock1.q.out

Modified: hive/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hive/trunk/CHANGES.txt?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/CHANGES.txt (original)
+++ hive/trunk/CHANGES.txt Tue Dec 7 06:48:47 2010
@@ -567,6 +567,9 @@ Trunk - Unreleased
HIVE-1824 Create a new ZooKeeper instance when retrying lock
(He Yongqiang via namit)

+ HIVE-1828 No need to get Table/Partition for show locks.
+ (He Yongqiang via namit)
+
TESTS

HIVE-1464. improve test query performance

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java Tue Dec 7 06:48:47 2010
@@ -1347,11 +1347,11 @@ public class DDLTask extends Task<DDLWor
List<HiveLock> locks = null;

if (showLocks.getTableName() == null) {
- locks = lockMgr.getLocks();
+ locks = lockMgr.getLocks(isExt);
}
else {
locks = lockMgr.getLocks(getHiveObject(showLocks.getTableName(),
- showLocks.getPartSpec()));
+ showLocks.getPartSpec()), isExt);
}

Collections.sort(locks, new Comparator<HiveLock>() {
@@ -1495,7 +1495,7 @@ public class DDLTask extends Task<DDLWor
String tabName = unlockTbl.getTableName();
HiveLockObject obj = getHiveObject(tabName, unlockTbl.getPartSpec());

- List<HiveLock> locks = lockMgr.getLocks(obj);
+ List<HiveLock> locks = lockMgr.getLocks(obj, false);
if ((locks == null) || (locks.isEmpty())) {
throw new HiveException("Table " + tabName + " is not locked ");
}

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockManager.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockManager.java?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockManager.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockManager.java Tue Dec 7 06:48:47 2010
@@ -35,7 +35,7 @@ public interface HiveLockManager {
boolean keepAlive, int numRetries, int sleepTime) throws LockException;
public void unlock(HiveLock hiveLock) throws LockException;

- public List<HiveLock> getLocks() throws LockException;
- public List<HiveLock> getLocks(HiveLockObject key) throws LockException;
+ public List<HiveLock> getLocks(boolean verifyTablePartitions) throws LockException;
+ public List<HiveLock> getLocks(HiveLockObject key, boolean fetchData) throws LockException;
public void close() throws LockException;
}

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveLockObject.java Tue Dec 7 06:48:47 2010
@@ -22,60 +22,45 @@ import org.apache.hadoop.hive.ql.metadat
import org.apache.hadoop.hive.ql.metadata.Table;

public class HiveLockObject {
- /**
- * The table.
- */
- private Table t;
-
- /**
- * The partition. This is null for a non partitioned table.
- */
- private Partition p;
+
+ String [] pathNames = null;

/* user supplied data for that object */
private String data;

public HiveLockObject() {
- this.t = null;
- this.p = null;
this.data = null;
}
-
- public HiveLockObject(Table t, String data) {
- this.t = t;
- this.p = null;
- this.data = data;
- }
-
- public HiveLockObject(Partition p, String data) {
- this.t = null;
- this.p = p;
- this.data = data;
- }
-
- public Table getTable() {
- return t;
- }
-
- public void setTable (Table t) {
- this.t = t;
- }
-
- public Partition getPartition() {
- return p;
+
+ public HiveLockObject(String[] paths, String lockData) {
+ this.pathNames = paths;
+ this.data = lockData;
+ }
+
+ public HiveLockObject(Table tbl, String lockData) {
+ this(new String[] {tbl.getDbName(), tbl.getTableName()}, lockData);
}

- public void setPartition (Partition p) {
- this.p = p;
+ public HiveLockObject(Partition par, String lockData) {
+ this(new String[] { par.getTable().getDbName(),
+ par.getTable().getTableName(), par.getName() }, lockData);
}

public String getName() {
- if (t != null) {
- return t.getCompleteName();
+ if (this.pathNames == null) {
+ return null;
}
- else {
- return p.getCompleteName();
+ String ret = "";
+ boolean first = true;
+ for (int i = 0; i < pathNames.length; i++) {
+ if (!first) {
+ ret = ret + "@";
+ } else {
+ first = false;
+ }
+ ret = ret + pathNames[i];
}
+ return ret;
}

public String getData() {

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/zookeeper/ZooKeeperHiveLockManager.java Tue Dec 7 06:48:47 2010
@@ -242,7 +242,7 @@ public class ZooKeeperHiveLockManager im
String quorumServers = getQuorumServers(conf);
ZooKeeper zkpClient = new ZooKeeper(quorumServers, sessionTimeout, new DummyWatcher());
String parent = conf.getVar(HiveConf.ConfVars.HIVE_ZOOKEEPER_NAMESPACE);
- List<HiveLock> locks = getLocks(conf, zkpClient, null, parent);
+ List<HiveLock> locks = getLocks(conf, zkpClient, null, parent, false, false);

if (locks != null) {
for (HiveLock lock : locks) {
@@ -259,13 +259,13 @@ public class ZooKeeperHiveLockManager im
}

/* Get all locks */
- public List<HiveLock> getLocks() throws LockException {
- return getLocks(ctx.getConf(), zooKeeper, null, parent);
+ public List<HiveLock> getLocks(boolean verifyTablePartition) throws LockException {
+ return getLocks(ctx.getConf(), zooKeeper, null, parent, verifyTablePartition, false);
}

/* Get all locks for a particular object */
- public List<HiveLock> getLocks(HiveLockObject key) throws LockException {
- return getLocks(ctx.getConf(), zooKeeper, key, parent);
+ public List<HiveLock> getLocks(HiveLockObject key, boolean fetchData) throws LockException {
+ return getLocks(ctx.getConf(), zooKeeper, key, parent, false, fetchData);
}

/**
@@ -274,7 +274,8 @@ public class ZooKeeperHiveLockManager im
* @param key The object to be compared against - if key is null, then get all locks
**/
private static List<HiveLock> getLocks(HiveConf conf, ZooKeeper zkpClient,
- HiveLockObject key, String parent) throws LockException {
+ HiveLockObject key, String parent, boolean verifyTablePartition, boolean fetchData)
+ throws LockException {
List<HiveLock> locks = new ArrayList<HiveLock>();
List<String> children;

@@ -284,29 +285,33 @@ public class ZooKeeperHiveLockManager im
// no locks present
return locks;
}
-
+
for (String child : children) {
- String data = "NULL";
child = "/" + parent + "/" + child;
-
- try {
- data = new String(zkpClient.getData(child, new DummyWatcher(), null));
- } catch (Exception e) {
- LOG.error("Error in getting data for " + child + " " + e);
- // ignore error
- }
-
+
HiveLockMode mode = getLockMode(conf, child);
if (mode == null) {
continue;
}
-
- HiveLockObject obj = getLockObject(conf, child, mode, data);
+
+ String data = "NULL";
+ //set the lock object with a dummy data, and then do a set if needed.
+ HiveLockObject obj = getLockObject(conf, child, mode, data, verifyTablePartition);
if (obj == null) {
continue;
}
+
if ((key == null) ||
(obj.getName().equals(key.getName()))) {
+ if (fetchData) {
+ try {
+ data = new String(zkpClient.getData(child, new DummyWatcher(), null));
+ } catch (Exception e) {
+ LOG.error("Error in getting data for " + child + " " + e);
+ // ignore error
+ }
+ }
+ obj.setData(data);
HiveLock lck = (HiveLock)(new ZooKeeperHiveLock(child, obj, mode));
locks.add(lck);
}
@@ -345,9 +350,11 @@ public class ZooKeeperHiveLockManager im
* The object may correspond to a table, a partition or a parent to a partition.
* For eg: if Table T is partitioned by ds, hr and ds=1/hr=1 is a valid partition,
* the lock may also correspond to T@ds=1, which is not a valid object
+ * @param verifyTablePartition
**/
private static HiveLockObject getLockObject(HiveConf conf, String path,
- HiveLockMode mode, String data) throws LockException {
+ HiveLockMode mode, String data, boolean verifyTablePartition)
+ throws LockException {
try {
Hive db = Hive.get(conf);
int indx = path.lastIndexOf(mode.toString());
@@ -357,8 +364,18 @@ public class ZooKeeperHiveLockManager im
if (names.length < 2) {
return null;
}
-
- Table tab = db.getTable(MetaStoreUtils.DEFAULT_DATABASE_NAME,
+
+ if (!verifyTablePartition) {
+ if (names.length == 2) {
+ return new HiveLockObject(names, data);
+ } else {
+ return new HiveLockObject(objName.split("/")[1].replaceAll(
+ conf.getVar(HiveConf.ConfVars.DEFAULT_ZOOKEEPER_PARTITION_NAME),
+ "/").split("@"), data);
+ }
+ }
+
+ Table tab = db.getTable(MetaStoreUtils.DEFAULT_DATABASE_NAME, //need to change to names[0]
names[1], false); // do not throw exception if table does not exist
if (tab == null) {
return null;

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java Tue Dec 7 06:48:47 2010
@@ -965,17 +965,19 @@ public class DDLSemanticAnalyzer extends

if (ast.getChildCount() >= 1) {
// table for which show locks is being executed
- ASTNode tableTypeExpr = (ASTNode) ast.getChild(0);
- tableName = getFullyQualifiedName((ASTNode)tableTypeExpr.getChild(0));
-
- // get partition metadata if partition specified
- if (tableTypeExpr.getChildCount() == 2) {
- ASTNode partspec = (ASTNode) tableTypeExpr.getChild(1);
- partSpec = getPartSpec(partspec);
- }
-
- if (ast.getChildCount() >= 2) {
- isExtended = (ast.getChild(1).getType() == HiveParser.KW_EXTENDED);
+ for (int i = 0; i < ast.getChildCount(); i++) {
+ ASTNode child = (ASTNode) ast.getChild(i);
+ if (child.getType() == HiveParser.TOK_TABTYPE) {
+ ASTNode tableTypeExpr = (ASTNode) child;
+ tableName = getFullyQualifiedName((ASTNode) tableTypeExpr.getChild(0));
+ // get partition metadata if partition specified
+ if (tableTypeExpr.getChildCount() == 2) {
+ ASTNode partspec = (ASTNode) tableTypeExpr.getChild(1);
+ partSpec = getPartSpec(partspec);
+ }
+ } else if (child.getType() == HiveParser.KW_EXTENDED) {
+ isExtended = true;
+ }
}
}


Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g Tue Dec 7 06:48:47 2010
@@ -678,8 +678,7 @@ showStatement
KW_SHOW KW_PARTITIONS Identifier partitionSpec? -> ^(TOK_SHOWPARTITIONS Identifier partitionSpec?)
KW_SHOW KW_TABLE KW_EXTENDED ((KW_FROM|KW_IN) db_name=Identifier)? KW_LIKE showStmtIdentifier partitionSpec?
-> ^(TOK_SHOW_TABLESTATUS showStmtIdentifier $db_name? partitionSpec?)
- | KW_SHOW KW_LOCKS -> ^(TOK_SHOWLOCKS)
- | KW_SHOW KW_LOCKS (parttype=partTypeExpr) (isExtended=KW_EXTENDED)? -> ^(TOK_SHOWLOCKS $parttype $isExtended?)
+ | KW_SHOW KW_LOCKS (parttype=partTypeExpr)? (isExtended=KW_EXTENDED)? -> ^(TOK_SHOWLOCKS $parttype? $isExtended?)
KW_SHOW (showOptions=KW_FORMATTED)? (KW_INDEX|KW_INDEXES) KW_ON showStmtIdentifier ((KW_FROM|KW_IN) db_name=Identifier)?
-> ^(TOK_SHOWINDEXES showStmtIdentifier $showOptions? $db_name?)
;

Added: hive/trunk/ql/src/test/queries/clientnegative/lockneg5.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientnegative/lockneg5.q?rev=1042920&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientnegative/lockneg5.q (added)
+++ hive/trunk/ql/src/test/queries/clientnegative/lockneg5.q Tue Dec 7 06:48:47 2010
@@ -0,0 +1,2 @@
+drop table tstsrcpart;
+show locks tstsrcpart extended;
\ No newline at end of file

Modified: hive/trunk/ql/src/test/queries/clientpositive/lock1.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/lock1.q?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/lock1.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/lock1.q Tue Dec 7 06:48:47 2010
@@ -12,14 +12,18 @@ SHOW LOCKS tstsrc extended;

UNLOCK TABLE tstsrc;
SHOW LOCKS;
+SHOW LOCKS extended;
SHOW LOCKS tstsrc;
lock TABLE tstsrc SHARED;
SHOW LOCKS;
+SHOW LOCKS extended;
SHOW LOCKS tstsrc;
LOCK TABLE tstsrc SHARED;
SHOW LOCKS;
+SHOW LOCKS extended;
SHOW LOCKS tstsrc;
UNLOCK TABLE tstsrc;
SHOW LOCKS;
+SHOW LOCKS extended;
SHOW LOCKS tstsrc;
drop table tstsrc;

Added: hive/trunk/ql/src/test/results/clientnegative/lockneg5.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientnegative/lockneg5.q.out?rev=1042920&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientnegative/lockneg5.q.out (added)
+++ hive/trunk/ql/src/test/results/clientnegative/lockneg5.q.out Tue Dec 7 06:48:47 2010
@@ -0,0 +1,8 @@
+PREHOOK: query: drop table tstsrcpart
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: drop table tstsrcpart
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: show locks tstsrcpart extended
+PREHOOK: type: SHOWLOCKS
+FAILED: Error in metadata: org.apache.hadoop.hive.ql.metadata.InvalidTableException: Table not found
+FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

Modified: hive/trunk/ql/src/test/results/clientpositive/lock1.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/lock1.q.out?rev=1042920&r1=1042919&r2=1042920&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/lock1.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/lock1.q.out Tue Dec 7 06:48:47 2010
@@ -56,7 +56,7 @@ POSTHOOK: type: SHOWLOCKS
POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
default@tstsrc SHARED
-QUERYID_LOCK:njain_20101116183333_f1267a1d-8cc2-4077-ab5d-380708a0494b TIME : 1289961194566
+QUERYID_LOCK:heyongqiang_20101203190404_a00af404-b094-4552-8ecc-0004930a878a TIME : 1291431894235
PREHOOK: query: UNLOCK TABLE tstsrc
PREHOOK: type: UNLOCKTABLE
POSTHOOK: query: UNLOCK TABLE tstsrc
@@ -69,6 +69,12 @@ POSTHOOK: query: SHOW LOCKS
POSTHOOK: type: SHOWLOCKS
POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: SHOW LOCKS extended
+PREHOOK: type: SHOWLOCKS
+POSTHOOK: query: SHOW LOCKS extended
+POSTHOOK: type: SHOWLOCKS
+POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
PREHOOK: query: SHOW LOCKS tstsrc
PREHOOK: type: SHOWLOCKS
POSTHOOK: query: SHOW LOCKS tstsrc
@@ -88,6 +94,14 @@ POSTHOOK: type: SHOWLOCKS
POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
default@tstsrc SHARED
+PREHOOK: query: SHOW LOCKS extended
+PREHOOK: type: SHOWLOCKS
+POSTHOOK: query: SHOW LOCKS extended
+POSTHOOK: type: SHOWLOCKS
+POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+default@tstsrc SHARED
+QUERYID_LOCK:heyongqiang_20101203190404_feadd884-14ab-4305-8078-605128a33c42 TIME : 1291431894956
PREHOOK: query: SHOW LOCKS tstsrc
PREHOOK: type: SHOWLOCKS
POSTHOOK: query: SHOW LOCKS tstsrc
@@ -109,6 +123,16 @@ POSTHOOK: Lineage: tstsrc.key SIMPLE [(s
POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
default@tstsrc SHARED
default@tstsrc SHARED
+PREHOOK: query: SHOW LOCKS extended
+PREHOOK: type: SHOWLOCKS
+POSTHOOK: query: SHOW LOCKS extended
+POSTHOOK: type: SHOWLOCKS
+POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+default@tstsrc SHARED
+QUERYID_LOCK:heyongqiang_20101203190404_53022be2-f951-4b33-895a-d373a5791d16 TIME : 1291431895381
+default@tstsrc SHARED
+QUERYID_LOCK:heyongqiang_20101203190404_feadd884-14ab-4305-8078-605128a33c42 TIME : 1291431894956
PREHOOK: query: SHOW LOCKS tstsrc
PREHOOK: type: SHOWLOCKS
POSTHOOK: query: SHOW LOCKS tstsrc
@@ -129,6 +153,12 @@ POSTHOOK: query: SHOW LOCKS
POSTHOOK: type: SHOWLOCKS
POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: SHOW LOCKS extended
+PREHOOK: type: SHOWLOCKS
+POSTHOOK: query: SHOW LOCKS extended
+POSTHOOK: type: SHOWLOCKS
+POSTHOOK: Lineage: tstsrc.key SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: tstsrc.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
PREHOOK: query: SHOW LOCKS tstsrc
PREHOOK: type: SHOWLOCKS
POSTHOOK: query: SHOW LOCKS tstsrc

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommits @
categorieshive, hadoop
postedDec 7, '10 at 6:49a
activeDec 7, '10 at 6:49a
posts1
users1
websitehive.apache.org

1 user in discussion

Namit: 1 post

People

Translate

site design / logo © 2021 Grokbase