[Groonga-commit] pgroonga/pgroonga at 93a76cf [master] Support data + size API

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Oct 27 00:47:15 JST 2016


Kouhei Sutou	2016-10-27 00:47:15 +0900 (Thu, 27 Oct 2016)

  New Revision: 93a76cf0caadcbc3bd324689b370b304d7087248
  https://github.com/pgroonga/pgroonga/commit/93a76cf0caadcbc3bd324689b370b304d7087248

  Message:
    Support data + size API

  Modified files:
    src/pgrn_column_name.c
    src/pgrn_column_name.h
    src/pgrn_groonga.c
    src/pgrn_groonga.h

  Modified: src/pgrn_column_name.c (+18 -4)
===================================================================
--- src/pgrn_column_name.c    2016-10-25 23:38:54 +0900 (07c6c70)
+++ src/pgrn_column_name.c    2016-10-27 00:47:15 +0900 (eb89a59)
@@ -41,15 +41,19 @@ checkSize(size_t size)
 }
 
 static size_t
-PGrnColumnNameEncodeUTF8(const char *name, char *encodedName)
+PGrnColumnNameEncodeUTF8WithSize(const char *name,
+								 size_t nameSize,
+								 char *encodedName)
 {
 	const char *current;
+	const char *end;
 	char *encodedCurrent;
 	size_t encodedNameSize = 0;
 
 	current = name;
+	end = name + nameSize;
 	encodedCurrent = encodedName;
-	while (*current != '\0')
+	while (current < end)
 	{
 		int length;
 
@@ -82,16 +86,26 @@ PGrnColumnNameEncodeUTF8(const char *name, char *encodedName)
 size_t
 PGrnColumnNameEncode(const char *name, char *encodedName)
 {
+	return PGrnColumnNameEncodeWithSize(name, strlen(name), encodedName);
+}
+
+size_t
+PGrnColumnNameEncodeWithSize(const char *name,
+							 size_t nameSize,
+							 char *encodedName)
+{
 	const char *current;
+	const char *end;
 	char *encodedCurrent;
 	size_t encodedNameSize = 0;
 
 	if (GetDatabaseEncoding() == PG_UTF8)
-		return PGrnColumnNameEncodeUTF8(name, encodedName);
+		return PGrnColumnNameEncodeUTF8WithSize(name, nameSize, encodedName);
 
 	current = name;
+	end = name + nameSize;
 	encodedCurrent = encodedName;
-	while (*current != '\0')
+	while (current < end)
 	{
 		int length;
 

  Modified: src/pgrn_column_name.h (+3 -0)
===================================================================
--- src/pgrn_column_name.h    2016-10-25 23:38:54 +0900 (3001024)
+++ src/pgrn_column_name.h    2016-10-27 00:47:15 +0900 (f104b87)
@@ -1,4 +1,7 @@
 #pragma once
 
 size_t PGrnColumnNameEncode(const char *name, char *encodedName);
+size_t PGrnColumnNameEncodeWithSize(const char *name,
+									size_t nameSize,
+									char *encodedName);
 size_t PGrnColumnNameDecode(const char *encodedName, char *name);

  Modified: src/pgrn_groonga.c (+12 -3)
===================================================================
--- src/pgrn_groonga.c    2016-10-25 23:38:54 +0900 (399c9e1)
+++ src/pgrn_groonga.c    2016-10-27 00:47:15 +0900 (7781f85)
@@ -81,11 +81,20 @@ PGrnLookup(const char *name, int errorLevel)
 grn_obj *
 PGrnLookupColumn(grn_obj *table, const char *name, int errorLevel)
 {
+	return PGrnLookupColumnWithSize(table, name, strlen(name), errorLevel);
+}
+
+grn_obj *
+PGrnLookupColumnWithSize(grn_obj *table,
+						 const char *name,
+						 size_t nameSize,
+						 int errorLevel)
+{
 	char columnName[GRN_TABLE_MAX_KEY_SIZE];
 	size_t columnNameSize;
 	grn_obj *column;
 
-	columnNameSize = PGrnColumnNameEncode(name, columnName);
+	columnNameSize = PGrnColumnNameEncodeWithSize(name, nameSize, columnName);
 	column = grn_obj_column(ctx, table, columnName, columnNameSize);
 	if (!column)
 	{
@@ -95,9 +104,9 @@ PGrnLookupColumn(grn_obj *table, const char *name, int errorLevel)
 		tableNameSize = grn_obj_name(ctx, table, tableName, sizeof(tableName));
 		ereport(errorLevel,
 				(errcode(ERRCODE_INVALID_NAME),
-				 errmsg("pgroonga: column isn't found: <%.*s>:<%s>",
+				 errmsg("pgroonga: column isn't found: <%.*s>:<%.*s>",
 						tableNameSize, tableName,
-						name)));
+						(int)nameSize, name)));
 	}
 
 	return column;

  Modified: src/pgrn_groonga.h (+4 -0)
===================================================================
--- src/pgrn_groonga.h    2016-10-25 23:38:54 +0900 (8699ab6)
+++ src/pgrn_groonga.h    2016-10-27 00:47:15 +0900 (901a342)
@@ -16,6 +16,10 @@ grn_bool PGrnCheck(const char *message);
 
 grn_obj *PGrnLookup(const char *name, int errorLevel);
 grn_obj *PGrnLookupColumn(grn_obj *table, const char *name, int errorLevel);
+grn_obj *PGrnLookupColumnWithSize(grn_obj *table,
+								  const char *name,
+								  size_t nameSize,
+								  int errorLevel);
 grn_obj *PGrnLookupSourcesTable(Relation index, int errorLevel);
 grn_obj *PGrnLookupSourcesCtidColumn(Relation index, int errorLevel);
 grn_obj *PGrnLookupLexicon(Relation index,
-------------- next part --------------
HTML����������������������������...
Download 



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