[Groonga-commit] pgroonga/pgroonga at 1a2076e [master] wal: unify common code

Back to archive index

Kouhei Sutou null+****@clear*****
Sat Oct 29 16:41:02 JST 2016


Kouhei Sutou	2016-10-29 16:41:02 +0900 (Sat, 29 Oct 2016)

  New Revision: 1a2076ee26e7eeef6864ab155d841c002cfff53e
  https://github.com/pgroonga/pgroonga/commit/1a2076ee26e7eeef6864ab155d841c002cfff53e

  Message:
    wal: unify common code

  Modified files:
    src/pgrn_wal.c

  Modified: src/pgrn_wal.c (+33 -87)
===================================================================
--- src/pgrn_wal.c    2016-10-29 16:39:41 +0900 (df35368)
+++ src/pgrn_wal.c    2016-10-29 16:41:02 +0900 (ecd97bc)
@@ -441,18 +441,20 @@ PGrnWALInsertColumnFinish(PGrnWALData *data)
 
 #ifdef PGRN_SUPPORT_WAL
 static void
-PGrnWALInsertColumnValueBulk(PGrnWALData *data,
-							 const char *name,
-							 grn_obj *value)
+PGrnWALInsertColumnValueRaw(PGrnWALData *data,
+							const char *name,
+							grn_id domain,
+							const char *value,
+							size_t valueSize)
 {
 	msgpack_packer *packer;
 
 	packer = &(data->packer);
 
-	switch (value->header.domain)
+	switch (domain)
 	{
 	case GRN_DB_BOOL:
-		if (GRN_BOOL_VALUE(value))
+		if (*((grn_bool *)value))
 		{
 			msgpack_pack_true(packer);
 		}
@@ -462,42 +464,40 @@ PGrnWALInsertColumnValueBulk(PGrnWALData *data,
 		}
 		break;
 	case GRN_DB_INT8:
-		msgpack_pack_int8(packer, GRN_INT8_VALUE(value));
+		msgpack_pack_int8(packer, *((int8_t *)(value)));
 		break;
 	case GRN_DB_UINT8:
-		msgpack_pack_uint8(packer, GRN_UINT8_VALUE(value));
+		msgpack_pack_uint8(packer, *((uint8_t *)(value)));
 		break;
 	case GRN_DB_INT16:
-		msgpack_pack_int16(packer, GRN_INT16_VALUE(value));
+		msgpack_pack_int16(packer, *((int16_t *)(value)));
 		break;
 	case GRN_DB_UINT16:
-		msgpack_pack_uint16(packer, GRN_UINT16_VALUE(value));
+		msgpack_pack_uint16(packer, *((uint16_t *)(value)));
 		break;
 	case GRN_DB_INT32:
-		msgpack_pack_int32(packer, GRN_INT32_VALUE(value));
+		msgpack_pack_int32(packer, *((int32_t *)(value)));
 		break;
 	case GRN_DB_UINT32:
-		msgpack_pack_uint32(packer, GRN_UINT32_VALUE(value));
+		msgpack_pack_uint32(packer, *((uint32_t *)(value)));
 		break;
 	case GRN_DB_INT64:
-		msgpack_pack_int64(packer, GRN_INT64_VALUE(value));
+		msgpack_pack_int64(packer, *((int64_t *)(value)));
 		break;
 	case GRN_DB_UINT64:
-		msgpack_pack_uint64(packer, GRN_UINT64_VALUE(value));
+		msgpack_pack_uint64(packer, *((uint64_t *)(value)));
 		break;
 	case GRN_DB_FLOAT:
-		msgpack_pack_double(packer, GRN_FLOAT_VALUE(value));
+		msgpack_pack_double(packer, *((float_t *)(value)));
 		break;
 	case GRN_DB_TIME:
-		msgpack_pack_int64(packer, GRN_TIME_VALUE(value));
+		msgpack_pack_int64(packer, *((int64_t *)(value)));
 		break;
 	case GRN_DB_SHORT_TEXT:
 	case GRN_DB_TEXT:
 	case GRN_DB_LONG_TEXT:
-		msgpack_pack_str(packer, GRN_TEXT_LEN(value));
-		msgpack_pack_str_body(packer,
-							  GRN_TEXT_VALUE(value),
-							  GRN_TEXT_LEN(value));
+		msgpack_pack_str(packer, valueSize);
+		msgpack_pack_str_body(packer, value, valueSize);
 		break;
 	default:
 		{
@@ -506,7 +506,7 @@ PGrnWALInsertColumnValueBulk(PGrnWALData *data,
 
 			domainNameSize = grn_table_get_key(ctx,
 											   grn_ctx_db(ctx),
-											   value->header.domain,
+											   domain,
 											   domainName,
 											   GRN_TABLE_MAX_KEY_SIZE);
 			ereport(ERROR,
@@ -521,6 +521,18 @@ PGrnWALInsertColumnValueBulk(PGrnWALData *data,
 }
 
 static void
+PGrnWALInsertColumnValueBulk(PGrnWALData *data,
+							 const char *name,
+							 grn_obj *value)
+{
+	PGrnWALInsertColumnValueRaw(data,
+								name,
+								value->header.domain,
+								GRN_BULK_HEAD(value),
+								GRN_BULK_VSIZE(value));
+}
+
+static void
 PGrnWALInsertColumnValueVector(PGrnWALData *data,
 							   const char *name,
 							   grn_obj *value)
@@ -544,73 +556,7 @@ PGrnWALInsertColumnValueVector(PGrnWALData *data,
 											 &element,
 											 NULL,
 											 &domain);
-		switch (domain)
-		{
-		case GRN_DB_BOOL:
-			if (*((grn_bool *)element))
-			{
-				msgpack_pack_true(packer);
-			}
-			else
-			{
-				msgpack_pack_false(packer);
-			}
-			break;
-		case GRN_DB_INT8:
-			msgpack_pack_int8(packer, *((int8_t *)element));
-			break;
-		case GRN_DB_UINT8:
-			msgpack_pack_uint8(packer, *((uint8_t *)element));
-			break;
-		case GRN_DB_INT16:
-			msgpack_pack_int16(packer, *((int16_t *)element));
-			break;
-		case GRN_DB_UINT16:
-			msgpack_pack_uint16(packer, *((uint16_t *)element));
-			break;
-		case GRN_DB_INT32:
-			msgpack_pack_int32(packer, *((int32_t *)element));
-			break;
-		case GRN_DB_UINT32:
-			msgpack_pack_uint32(packer, *((uint32_t *)element));
-			break;
-		case GRN_DB_INT64:
-			msgpack_pack_int64(packer, *((int64_t *)element));
-			break;
-		case GRN_DB_UINT64:
-			msgpack_pack_uint64(packer, *((uint64_t *)element));
-			break;
-		case GRN_DB_FLOAT:
-			msgpack_pack_double(packer, *((double *)element));
-			break;
-		case GRN_DB_TIME:
-			msgpack_pack_int64(packer, *((int64_t *)element));
-			break;
-		case GRN_DB_SHORT_TEXT:
-		case GRN_DB_TEXT:
-		case GRN_DB_LONG_TEXT:
-			msgpack_pack_str(packer, elementSize);
-			msgpack_pack_str_body(packer, element, elementSize);
-			break;
-		default:
-			{
-				char domainName[GRN_TABLE_MAX_KEY_SIZE];
-				int domainNameSize;
-
-				domainNameSize = grn_table_get_key(ctx,
-												   grn_ctx_db(ctx),
-												   domain,
-												   domainName,
-												   GRN_TABLE_MAX_KEY_SIZE);
-				ereport(ERROR,
-						(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-						 errmsg("pgroonga: WAL: insert: array: "
-								"unsupported type: <%s>: <%.*s>",
-								name,
-								domainNameSize, domainName)));
-			}
-			break;
-		}
+		PGrnWALInsertColumnValueBraw(data, name, domain, element, elementSize);
 	}
 }
 #endif
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index