~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
/***********************************************************************
2
Comparison services for records
3
4
(c) 1994-1996 Innobase Oy
5
6
Created 7/1/1994 Heikki Tuuri
7
************************************************************************/
8
9
/*****************************************************************
10
This function is used to compare two data fields for which we know the
11
data type. */
12
UNIV_INLINE
13
int
14
cmp_data_data(
15
/*==========*/
16
				/* out: 1, 0, -1, if data1 is greater, equal,
17
				less than data2, respectively */
18
	ulint		mtype,	/* in: main type */
19
	ulint		prtype,	/* in: precise type */
20
	byte*		data1,	/* in: data field (== a pointer to a memory
21
				buffer) */
22
	ulint		len1,	/* in: data field length or UNIV_SQL_NULL */
23
	byte*		data2,	/* in: data field (== a pointer to a memory
24
				buffer) */
25
	ulint		len2)	/* in: data field length or UNIV_SQL_NULL */
26
{
27
	return(cmp_data_data_slow(mtype, prtype, data1, len1, data2, len2));
28
}
29
30
/*****************************************************************
31
This function is used to compare two dfields where at least the first
32
has its data type field set. */
33
UNIV_INLINE
34
int
35
cmp_dfield_dfield(
36
/*==============*/
37
				/* out: 1, 0, -1, if dfield1 is greater, equal,
38
				less than dfield2, respectively */
39
	dfield_t*	dfield1,/* in: data field; must have type field set */
40
	dfield_t*	dfield2)/* in: data field */
41
{
42
	const dtype_t*	type;
43
44
	ut_ad(dfield_check_typed(dfield1));
45
46
	type = dfield_get_type(dfield1);
47
48
	return(cmp_data_data(type->mtype, type->prtype,
49
			     dfield_get_data(dfield1),
50
			     dfield_get_len(dfield1),
51
			     dfield_get_data(dfield2),
52
			     dfield_get_len(dfield2)));
53
}
54
55
/*****************************************************************
56
This function is used to compare two physical records. Only the common
57
first fields are compared. */
58
UNIV_INLINE
59
int
60
cmp_rec_rec(
61
/*========*/
62
				/* out: 1, 0 , -1 if rec1 is greater, equal,
63
				less, respectively, than rec2; only the common
64
				first fields are compared */
65
	rec_t*		rec1,	/* in: physical record */
66
	rec_t*		rec2,	/* in: physical record */
67
	const ulint*	offsets1,/* in: rec_get_offsets(rec1, index) */
68
	const ulint*	offsets2,/* in: rec_get_offsets(rec2, index) */
69
	dict_index_t*	index)	/* in: data dictionary index */
70
{
71
	ulint	match_f		= 0;
72
	ulint	match_b		= 0;
73
74
	return(cmp_rec_rec_with_match(rec1, rec2, offsets1, offsets2, index,
75
				      &match_f, &match_b));
76
}