switch (target_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 : case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 : case GRN_DB_FLOAT : break; default :
{
grn_obj inspected;
GRN_TEXT_INIT(&inspected, 0);
grn_inspect(ctx, &inspected, target);
GRN_PLUGIN_ERROR(ctx,
GRN_INVALID_ARGUMENT, "window_sum(): " "the target column must be number column: <%.*s>",
(int)GRN_TEXT_LEN(&inspected),
GRN_TEXT_VALUE(&inspected));
GRN_OBJ_FIN(ctx, &inspected); return ctx->rc;
} break;
}
switch (output_column_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 :
GRN_INT64_INIT(&sum, 0); break; case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 :
GRN_UINT64_INIT(&sum, 0); break; case GRN_DB_FLOAT :
GRN_FLOAT_INIT(&sum, 0); break; default :
{
grn_obj inspected;
GRN_TEXT_INIT(&inspected, 0);
grn_inspect(ctx, &inspected, output_column);
GRN_PLUGIN_ERROR(ctx,
GRN_INVALID_ARGUMENT, "window_sum(): " "the output column must be number column: <%.*s>",
(int)GRN_TEXT_LEN(&inspected),
GRN_TEXT_VALUE(&inspected));
GRN_OBJ_FIN(ctx, &inspected); return ctx->rc;
} break;
}
GRN_VOID_INIT(&value);
while ((id = grn_window_next(ctx, window))) {
GRN_BULK_REWIND(&value);
grn_obj_get_value(ctx, target, id, &value); switch (target_range_id) { case GRN_DB_INT8 :
sum_raw_int64 += GRN_INT8_VALUE(&value); break; case GRN_DB_INT16 :
sum_raw_int64 += GRN_INT16_VALUE(&value); break; case GRN_DB_INT32 :
sum_raw_int64 += GRN_INT32_VALUE(&value); break; case GRN_DB_INT64 :
sum_raw_int64 += GRN_INT64_VALUE(&value); break; case GRN_DB_UINT8 :
sum_raw_uint64 += GRN_UINT8_VALUE(&value); break; case GRN_DB_UINT16 :
sum_raw_uint64 += GRN_UINT16_VALUE(&value); break; case GRN_DB_UINT32 :
sum_raw_uint64 += GRN_UINT32_VALUE(&value); break; case GRN_DB_UINT64 :
sum_raw_uint64 += GRN_UINT64_VALUE(&value); break; case GRN_DB_FLOAT :
sum_raw_double += GRN_FLOAT_VALUE(&value); break; default : break;
}
}
switch (output_column_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 :
GRN_INT64_SET(ctx, &sum, sum_raw_int64); break; case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 :
GRN_UINT64_SET(ctx, &sum, sum_raw_uint64); break; case GRN_DB_FLOAT :
GRN_FLOAT_SET(ctx, &sum, sum_raw_double); break;
}
if (n_args != 0) {
GRN_PLUGIN_ERROR(ctx,
GRN_INVALID_ARGUMENT, "window_count(): wrong number of arguments (%d for 0)",
n_args); return ctx->rc;
}
output_column_range_id = grn_obj_get_range(ctx, output_column); switch (output_column_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 :
GRN_INT64_INIT(&n_records, 0); break; case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 :
GRN_UINT64_INIT(&n_records, 0); break; case GRN_DB_FLOAT :
GRN_FLOAT_INIT(&n_records, 0); break; default :
{
grn_obj inspected;
GRN_TEXT_INIT(&inspected, 0);
grn_inspect(ctx, &inspected, output_column);
GRN_PLUGIN_ERROR(ctx,
GRN_INVALID_ARGUMENT, "window_count(): " "the output column must be number column: <%.*s>",
(int)GRN_TEXT_LEN(&inspected),
GRN_TEXT_VALUE(&inspected));
GRN_OBJ_FIN(ctx, &inspected); return ctx->rc;
} break;
}
if (grn_window_is_sorted(ctx, window)) { while ((id = grn_window_next(ctx, window))) {
n_records_raw++; switch (output_column_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 :
GRN_INT64_SET(ctx, &n_records, n_records_raw); break; case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 :
GRN_UINT64_SET(ctx, &n_records, n_records_raw); break; case GRN_DB_FLOAT :
GRN_FLOAT_SET(ctx, &n_records, n_records_raw); break; default : break;
}
grn_obj_set_value(ctx, output_column, id, &n_records, GRN_OBJ_SET);
}
} else { while ((id = grn_window_next(ctx, window))) {
n_records_raw++;
}
switch (output_column_range_id) { case GRN_DB_INT8 : case GRN_DB_INT16 : case GRN_DB_INT32 : case GRN_DB_INT64 :
GRN_INT64_SET(ctx, &n_records, n_records_raw); break; case GRN_DB_UINT8 : case GRN_DB_UINT16 : case GRN_DB_UINT32 : case GRN_DB_UINT64 :
GRN_UINT64_SET(ctx, &n_records, n_records_raw); break; case GRN_DB_FLOAT :
GRN_FLOAT_SET(ctx, &n_records, n_records_raw); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.