mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	MDEV-32188 make TIMESTAMP use whole 32-bit unsigned range - Changed usage of timeval to my_timeval as the timeval parts on windows are 32-bit long, which causes some compiler issues on windows.
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#ifndef COMPAT56_H_INCLUDED
 | 
						|
#define COMPAT56_H_INCLUDED
 | 
						|
/*
 | 
						|
   Copyright (c) 2004, 2012, Oracle and/or its affiliates.
 | 
						|
   Copyright (c) 2013  MariaDB Foundation.
 | 
						|
 | 
						|
 This program is free software; you can redistribute it and/or modify
 | 
						|
 it under the terms of the GNU General Public License as published by
 | 
						|
 the Free Software Foundation; version 2 of the License.
 | 
						|
 | 
						|
 This program is distributed in the hope that it will be useful,
 | 
						|
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 GNU General Public License for more details.
 | 
						|
 | 
						|
 You should have received a copy of the GNU General Public License
 | 
						|
 along with this program; if not, write to the Free Software
 | 
						|
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335  USA */
 | 
						|
 | 
						|
 | 
						|
/** MySQL56 routines and macros **/
 | 
						|
 | 
						|
/*
 | 
						|
  Buffer size for a native TIMESTAMP representation, for use with NativBuffer.
 | 
						|
  4 bytes for seconds
 | 
						|
  3 bytes for microseconds
 | 
						|
  1 byte for the trailing '\0' (class Native reserves extra 1 byte for '\0')
 | 
						|
*/
 | 
						|
#define STRING_BUFFER_TIMESTAMP_BINARY_SIZE    8 /* 4 + 3 + 1 */
 | 
						|
 | 
						|
#define MY_PACKED_TIME_GET_INT_PART(x)     ((x) >> 24)
 | 
						|
#define MY_PACKED_TIME_GET_FRAC_PART(x)    ((x) % (1LL << 24))
 | 
						|
#define MY_PACKED_TIME_MAKE(i, f)          ((((ulonglong) (i)) << 24) + (f))
 | 
						|
#define MY_PACKED_TIME_MAKE_INT(i)         ((((ulonglong) (i)) << 24))
 | 
						|
 | 
						|
longlong TIME_to_longlong_datetime_packed(const MYSQL_TIME *);
 | 
						|
longlong TIME_to_longlong_time_packed(const MYSQL_TIME *);
 | 
						|
 | 
						|
void TIME_from_longlong_datetime_packed(MYSQL_TIME *ltime, longlong nr);
 | 
						|
void TIME_from_longlong_time_packed(MYSQL_TIME *ltime, longlong nr);
 | 
						|
 | 
						|
void my_datetime_packed_to_binary(longlong nr, uchar *ptr, uint dec);
 | 
						|
longlong my_datetime_packed_from_binary(const uchar *ptr, uint dec);
 | 
						|
uint my_datetime_binary_length(uint dec);
 | 
						|
 | 
						|
void my_time_packed_to_binary(longlong nr, uchar *ptr, uint dec);
 | 
						|
longlong my_time_packed_from_binary(const uchar *ptr, uint dec);
 | 
						|
uint my_time_binary_length(uint dec);
 | 
						|
 | 
						|
void my_timestamp_to_binary(const struct my_timeval *tm, uchar *ptr, uint dec);
 | 
						|
void my_timestamp_from_binary(struct my_timeval *tm, const uchar *ptr, uint dec);
 | 
						|
/* For ColumnStore */
 | 
						|
void my_timestamp_from_binary(struct timeval *tm, const uchar *ptr, uint dec);
 | 
						|
uint my_timestamp_binary_length(uint dec);
 | 
						|
/** End of MySQL routines and macros **/
 | 
						|
 | 
						|
#endif /* COMPAT56_H_INCLUDED */
 |