ibool dtuple_datas_are_ordering_equal( /*============================*/ /* out: TRUE if length and fieds are equal when compared with cmp_data_data: NOTE: in character type fields some letters are identified with others! (collation) */ dtuple_t* tuple1, /* in: tuple 1 */ dtuple_t* tuple2) /* in: tuple 2 */ { dfield_t* field1; dfield_t* field2; ulint n_fields; ulint i; ut_ad(tuple1 && tuple2); ut_ad(tuple1->magic_n == DATA_TUPLE_MAGIC_N); ut_ad(tuple2->magic_n == DATA_TUPLE_MAGIC_N); ut_ad(dtuple_check_typed(tuple1)); ut_ad(dtuple_check_typed(tuple2)); n_fields = dtuple_get_n_fields(tuple1); if (n_fields != dtuple_get_n_fields(tuple2)) { return(FALSE); } for (i = 0; i < n_fields; i++) { field1 = dtuple_get_nth_field(tuple1, i); field2 = dtuple_get_nth_field(tuple2, i); if (0 != cmp_dfield_dfield(field1, field2)) { return(FALSE); } } return(TRUE); }
/************************************************************//** Compare two data tuples, respecting the collation of character fields. @return 1, 0 , -1 if tuple1 is greater, equal, less, respectively, than tuple2 */ UNIV_INTERN int dtuple_coll_cmp( /*============*/ const dtuple_t* tuple1, /*!< in: tuple 1 */ const dtuple_t* tuple2) /*!< in: tuple 2 */ { ulint n_fields; ulint i; ut_ad(tuple1 && tuple2); ut_ad(tuple1->magic_n == DATA_TUPLE_MAGIC_N); ut_ad(tuple2->magic_n == DATA_TUPLE_MAGIC_N); ut_ad(dtuple_check_typed(tuple1)); ut_ad(dtuple_check_typed(tuple2)); n_fields = dtuple_get_n_fields(tuple1); if (n_fields != dtuple_get_n_fields(tuple2)) { return(n_fields < dtuple_get_n_fields(tuple2) ? -1 : 1); } for (i = 0; i < n_fields; i++) { int cmp; const dfield_t* field1 = dtuple_get_nth_field(tuple1, i); const dfield_t* field2 = dtuple_get_nth_field(tuple2, i); cmp = cmp_dfield_dfield(field1, field2); if (cmp) { return(cmp); } } return(0); }