[Groonga-commit] groonga/groonga at 0a5a143 [master] geo_in_rectangle: report error on cast

Back to archive index

Kouhei Sutou null+****@clear*****
Sun Dec 8 22:03:42 JST 2013


Kouhei Sutou	2013-12-08 22:03:42 +0900 (Sun, 08 Dec 2013)

  New Revision: 0a5a14396b3787059a152021dff53a47e46ea968
  https://github.com/groonga/groonga/commit/0a5a14396b3787059a152021dff53a47e46ea968

  Message:
    geo_in_rectangle: report error on cast

  Modified files:
    lib/geo.c
    test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_max_longitude.expected
    test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_min_longitude.expected
    test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_max_longitude.expected
    test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_min_longitude.expected

  Modified: lib/geo.c (+17 -0)
===================================================================
--- lib/geo.c    2013-12-08 21:37:33 +0900 (2ab0568)
+++ lib/geo.c    2013-12-08 22:03:42 +0900 (31956f1)
@@ -1016,6 +1016,7 @@ in_rectangle_data_fill(grn_ctx *ctx, grn_obj *index,
                        in_rectangle_data *data)
 {
   grn_id domain;
+  const char *domain_name;
 
   data->pat = grn_ctx_at(ctx, index->header.domain);
   domain = data->pat->header.domain;
@@ -1038,10 +1039,21 @@ in_rectangle_data_fill(grn_ctx *ctx, grn_obj *index,
     return;
   }
 
+  if (domain == GRN_DB_TOKYO_GEO_POINT) {
+    domain_name = "TokyoGeoPoint";
+  } else {
+    domain_name = "WGS84GeoPoint";
+  }
+
   if (top_left_point->header.domain != domain) {
     grn_obj_reinit(ctx, &(data->top_left_point_buffer), domain, GRN_BULK);
     if (grn_obj_cast(ctx, top_left_point, &(data->top_left_point_buffer),
                      GRN_FALSE)) {
+      ERR(GRN_INVALID_ARGUMENT,
+          "%s: failed to cast to %s: <%.*s>",
+          process_name, domain_name,
+          (int)GRN_TEXT_LEN(top_left_point),
+          GRN_TEXT_VALUE(top_left_point));
       return;
     }
     top_left_point = &(data->top_left_point_buffer);
@@ -1052,6 +1064,11 @@ in_rectangle_data_fill(grn_ctx *ctx, grn_obj *index,
     grn_obj_reinit(ctx, &(data->bottom_right_point_buffer), domain, GRN_BULK);
     if (grn_obj_cast(ctx, bottom_right_point, &(data->bottom_right_point_buffer),
                      GRN_FALSE)) {
+      ERR(GRN_INVALID_ARGUMENT,
+          "%s: failed to cast to %s: <%.*s>",
+          process_name, domain_name,
+          (int)GRN_TEXT_LEN(bottom_right_point),
+          GRN_TEXT_VALUE(bottom_right_point));
       return;
     }
     bottom_right_point = &(data->bottom_right_point_buffer);

  Modified: test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_max_longitude.expected (+2 -2)
===================================================================
--- test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_max_longitude.expected    2013-12-08 21:37:33 +0900 (1edd5a9)
+++ test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_max_longitude.expected    2013-12-08 22:03:42 +0900 (9ffa5e4)
@@ -6,10 +6,10 @@ select LandMarks --filter 'geo_in_rectangle(point, "0x0", "0x180.0")'
       0.0,
       0.0
     ],
-    "geo_in_rectangle(): bottom right point's longitude is too big: <648000000>(max:648000000): (0,0) (0,648000000)"
+    "geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x180.0>"
   ],
   [
 
   ]
 ]
-#|e| geo_in_rectangle(): bottom right point's longitude is too big: <648000000>(max:648000000): (0,0) (0,648000000)
+#|e| geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x180.0>

  Modified: test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_min_longitude.expected (+2 -2)
===================================================================
--- test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_min_longitude.expected    2013-12-08 21:37:33 +0900 (025ae5b)
+++ test/command/suite/select/filter/geo_in_rectangle/invalid/bottom_right_over_min_longitude.expected    2013-12-08 22:03:42 +0900 (50f52c0)
@@ -6,10 +6,10 @@ select LandMarks --filter 'geo_in_rectangle(point, "0x0", "0x-180.0")'
       0.0,
       0.0
     ],
-    "geo_in_rectangle(): bottom right point's longitude is too small: <-648000000>(min:-648000000): (0,0) (0,-648000000)"
+    "geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x-180.0>"
   ],
   [
 
   ]
 ]
-#|e| geo_in_rectangle(): bottom right point's longitude is too small: <-648000000>(min:-648000000): (0,0) (0,-648000000)
+#|e| geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x-180.0>

  Modified: test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_max_longitude.expected (+2 -2)
===================================================================
--- test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_max_longitude.expected    2013-12-08 21:37:33 +0900 (9b5f952)
+++ test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_max_longitude.expected    2013-12-08 22:03:42 +0900 (bd9efa7)
@@ -6,10 +6,10 @@ select LandMarks --filter 'geo_in_rectangle(point, "0x180.0", "0x0")'
       0.0,
       0.0
     ],
-    "geo_in_rectangle(): top left point's longitude is too big: <648000000>(max:648000000): (0,648000000) (0,0)"
+    "geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x180.0>"
   ],
   [
 
   ]
 ]
-#|e| geo_in_rectangle(): top left point's longitude is too big: <648000000>(max:648000000): (0,648000000) (0,0)
+#|e| geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x180.0>

  Modified: test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_min_longitude.expected (+2 -2)
===================================================================
--- test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_min_longitude.expected    2013-12-08 21:37:33 +0900 (79f8f8d)
+++ test/command/suite/select/filter/geo_in_rectangle/invalid/top_left_over_min_longitude.expected    2013-12-08 22:03:42 +0900 (b85131a)
@@ -6,10 +6,10 @@ select LandMarks --filter 'geo_in_rectangle(point, "0x-180.0", "0x0")'
       0.0,
       0.0
     ],
-    "geo_in_rectangle(): top left point's longitude is too small: <-648000000>(min:-648000000): (0,-648000000) (0,0)"
+    "geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x-180.0>"
   ],
   [
 
   ]
 ]
-#|e| geo_in_rectangle(): top left point's longitude is too small: <-648000000>(min:-648000000): (0,-648000000) (0,0)
+#|e| geo_in_rectangle(): failed to cast to WGS84GeoPoint: <0x-180.0>
-------------- next part --------------
HTML����������������������������...
Download 



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