Repository: incubator-hawq
Updated Branches:
  refs/heads/master af6cfe880 -> fde3b4fc9


HAWQ-284. Add a udf for new metadata flush strategy testing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/56159c32
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/56159c32
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/56159c32

Branch: refs/heads/master
Commit: 56159c324a0549d476cd5280d4626aff18440c7e
Parents: 2ba5a19
Author: stanlyxiang <stanly.sxi...@gmail.com>
Authored: Wed Dec 30 16:58:04 2015 +0800
Committer: stanlyxiang <stanly.sxi...@gmail.com>
Committed: Wed Dec 30 16:58:04 2015 +0800

----------------------------------------------------------------------
 src/backend/cdb/cdbmetadatacache.c           | 53 +++++++++++++++++++++++
 src/include/catalog/pg_proc.h                |  4 ++
 src/include/catalog/pg_proc.sql              |  2 +
 src/include/utils/builtins.h                 |  1 +
 src/test/regress/data/upgrade20/pg_proc.data |  1 +
 5 files changed, 61 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/56159c32/src/backend/cdb/cdbmetadatacache.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbmetadatacache.c 
b/src/backend/cdb/cdbmetadatacache.c
index f4c2369..fedcfbd 100644
--- a/src/backend/cdb/cdbmetadatacache.c
+++ b/src/backend/cdb/cdbmetadatacache.c
@@ -1400,3 +1400,56 @@ extern Datum gp_metadata_cache_info(PG_FUNCTION_ARGS)
     PG_RETURN_TEXT_P(cstring_to_text(message));    
 }
 
+/*
+ *  Metadata Cache UDF
+ *
+ *  Get entry info in the metadata cache
+ */
+extern Datum gp_metadata_cache_putentry_fortest(PG_FUNCTION_ARGS)
+{
+    Oid tablespace_oid = PG_GETARG_OID(0);
+    Oid database_oid = PG_GETARG_OID(1);
+    Oid relation_oid = PG_GETARG_OID(2);
+    int4 start = PG_GETARG_INT32(3);
+    int4 end = PG_GETARG_INT32(4);
+
+    LWLockAcquire(MetadataCacheLock, LW_EXCLUSIVE);
+
+    int i;
+    int4 stop = (start -end) / 10;
+    int4 current = 0;
+    int4 success = 0;
+    for(i=start;i<end;i++)
+    {
+       MetadataCacheKey key;
+       key.tablespace_oid = tablespace_oid;
+       key.database_oid = database_oid;
+       key.relation_oid = relation_oid;
+       key.segno = i;
+
+       bool found;
+       MetadataCacheEntry *entry = (MetadataCacheEntry 
*)hash_search(MetadataCache, (void *)&key, HASH_ENTER_NULL, &found);
+        entry->file_size = 134217728;
+        entry->block_num = 1;
+
+        AllocMetadataBlock(entry->block_num, &entry->first_block_id, 
&entry->last_block_id);
+
+       if(entry != NULL)
+       {
+               current++;
+               success++;
+       }
+       if(current == stop)
+       {
+               current = 0;
+               LWLockRelease(MetadataCacheLock);
+               pg_usleep(1 * USECS_PER_SEC);
+           LWLockAcquire(MetadataCacheLock, LW_EXCLUSIVE);
+       }
+    }
+    LWLockRelease(MetadataCacheLock);
+
+    char message[1024] = {0};
+    snprintf(message, 1024, "Metadata cache successed putting %d entries. 
Failed putting %d entries.", success, end - start - success);
+    PG_RETURN_TEXT_P(cstring_to_text(message));
+}

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/56159c32/src/include/catalog/pg_proc.h
----------------------------------------------------------------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 64b7661..2170041 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -10399,6 +10399,10 @@ DESCR("Get metadata cache current entry number");
 DATA(insert OID = 8084 ( gp_metadata_cache_current_block_num  PGNSP PGUID 12 f 
f t f s 0 20 f "" _null_ _null_ _null_ gp_metadata_cache_current_block_num - 
_null_ n ));
 DESCR("Get metadata cache current block number");
 
+/* gp_metadata_cache_putentry_fortest => text */
+DATA(insert OID = 8085 ( gp_metadata_cache_putentry_fortest  PGNSP PGUID 12 f 
f t f s 5 25 f "26 26 26 23 23" _null_ _null_ _null_ 
gp_metadata_cache_putentry_fortest - _null_ n ));
+DESCR("Put entries into metadata cache");
+
 /* gp_metadata_cache_exists => bool*/ 
 DATA(insert OID = 8082 ( gp_metadata_cache_exists  PGNSP PGUID 12 f f t f s 4 
16 f "26 26 26 23" _null_ _null_ _null_ gp_metadata_cache_exists - _null_ n ));
 DESCR("Check whether metadata cache key exists");

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/56159c32/src/include/catalog/pg_proc.sql
----------------------------------------------------------------------
diff --git a/src/include/catalog/pg_proc.sql b/src/include/catalog/pg_proc.sql
index d0fa636..dc871a8 100644
--- a/src/include/catalog/pg_proc.sql
+++ b/src/include/catalog/pg_proc.sql
@@ -5512,4 +5512,6 @@
 
  CREATE FUNCTION gp_metadata_cache_info(tablespace_oid, database_oid, 
relation_oid, segno) RETURNS text LANGUAGE internal STABLE STRICT AS 
'gp_metadata_cache_info' WITH (OID=8083, DESCRIPTION="Get metadata cache info 
for specific key");
  
+ CREATE FUNCTION gp_metadata_cache_putentry_fortest(tablespace_oid, 
database_oid, relation_oid, segno) RETURNS text LANGUAGE internal STABLE STRICT 
AS 'gp_metadata_cache_putentry_fortest' WITH (OID=8085, DESCRIPTION="Put 
entries into metadata cache for test");
+ 
  CREATE FUNCTION dump_resource_manager_status(info_type) RETURNS text LANGUAGE 
internal STABLE STRICT AS 'dump_resource_manager_status' WITH (OID=6450, 
DESCRIPTION="Dump resource manager status for testing");

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/56159c32/src/include/utils/builtins.h
----------------------------------------------------------------------
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 75742d3..e9f60cd 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -1200,5 +1200,6 @@ extern Datum 
gp_metadata_cache_current_num(PG_FUNCTION_ARGS);
 extern Datum gp_metadata_cache_current_block_num(PG_FUNCTION_ARGS);
 extern Datum gp_metadata_cache_exists(PG_FUNCTION_ARGS);
 extern Datum gp_metadata_cache_info(PG_FUNCTION_ARGS);
+extern Datum gp_metadata_cache_putentry_fortest(PG_FUNCTION_ARGS);
 
 #endif   /* BUILTINS_H */

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/56159c32/src/test/regress/data/upgrade20/pg_proc.data
----------------------------------------------------------------------
diff --git a/src/test/regress/data/upgrade20/pg_proc.data 
b/src/test/regress/data/upgrade20/pg_proc.data
index c39642c..2a19a7d 100644
--- a/src/test/regress/data/upgrade20/pg_proc.data
+++ b/src/test/regress/data/upgrade20/pg_proc.data
@@ -7,3 +7,4 @@
 8082,gp_metadata_cache_exists,11,10,12,f,f,t,f,s,4,16,f,"26 26 26 
23",,,,gp_metadata_cache_exists,-,,n
 8083,gp_metadata_cache_info,11,10,12,f,f,t,f,s,4,25,f,"26 26 26 
23",,,,gp_metadata_cache_info,-,,n
 
8084,gp_metadata_cache_current_block_num,11,10,12,f,f,t,f,s,0,20,f,"",,,,gp_metadata_cache_current_block_num,-,,n
+8085,gp_metadata_cache_putentry_fortest,11,10,12,f,f,t,f,s,5,25,f,"26 26 26 23 
23",,,,gp_metadata_cache_putentry_fortest,-,,n

Reply via email to