GRASS 8 Programmer's Manual 8.6.0dev(2026)-d2adb3a889
Loading...
Searching...
No Matches
sqltype.c
Go to the documentation of this file.
1/*!
2 \file lib/db/dbmi_base/sqltype.c
3
4 \brief DBMI Library (base) - SQL data type
5
6 SPDX-FileCopyrightText: 1999-2009, 2011 GRASS Development Team
7 SPDX-License-Identifier: GPL-2.0-or-later
8
9 \author Joel Jones (CERL/UIUC), Radim Blazek
10 \author Doxygenized by Martin Landa <landa.martin gmail.com> (2011)
11 */
12
13#include <string.h>
14#include <grass/dbmi.h>
15
16/*!
17 \brief Get SQL data type description
18
19 \param sqltype SQL data type
20
21 \return string buffer with description
22 */
23const char *db_sqltype_name(int sqltype)
24{
25 static char buf[256];
26 int from, to;
27
28 switch (sqltype) {
30 return "CHARACTER";
32 return "NUMERIC";
34 return "DECIMAL";
36 return "SMALLINT";
38 return "INTEGER";
40 return "REAL";
42 return "DOUBLE PRECISION";
44 return "DATE";
46 return "TIME";
48 return "SERIAL";
50 return "TEXT";
51 }
52 switch (sqltype & ~DB_DATETIME_MASK) {
54 strcpy(buf, "TIMESTAMP ");
55 break;
57 strcpy(buf, "INTERVAL ");
58 break;
59 default:
60 return "UNKNOWN";
61 }
62
63 db_interval_range(sqltype, &from, &to);
64
65 switch (from) {
66 case DB_YEAR:
67 strcat(buf, "YEAR");
68 break;
69 case DB_MONTH:
70 strcat(buf, "MONTH");
71 break;
72 case DB_DAY:
73 strcat(buf, "DAY");
74 break;
75 case DB_HOUR:
76 strcat(buf, "HOUR");
77 break;
78 case DB_MINUTE:
79 strcat(buf, "MINUTE");
80 break;
81 case DB_SECOND:
82 strcat(buf, "SECOND");
83 break;
84 case DB_FRACTION:
85 strcat(buf, "FRACTION");
86 break;
87 }
88
89 if (from)
90 strcat(buf, " to");
91 if (to)
92 strcat(buf, " ");
93
94 switch (to) {
95 case DB_YEAR:
96 strcat(buf, "YEAR");
97 break;
98 case DB_MONTH:
99 strcat(buf, "MONTH");
100 break;
101 case DB_DAY:
102 strcat(buf, "DAY");
103 break;
104 case DB_HOUR:
105 strcat(buf, "HOUR");
106 break;
107 case DB_MINUTE:
108 strcat(buf, "MINUTE");
109 break;
110 case DB_SECOND:
111 strcat(buf, "SECOND");
112 break;
113 case DB_FRACTION:
114 strcat(buf, "FRACTION");
115 break;
116 }
117
118 return buf;
119}
Main header of GRASS DataBase Management Interface.
#define DB_FRACTION
Definition dbmi.h:101
#define DB_SQL_TYPE_TIME
Definition dbmi.h:87
#define DB_SQL_TYPE_TEXT
Definition dbmi.h:90
#define DB_SQL_TYPE_INTEGER
Definition dbmi.h:81
#define DB_MINUTE
Definition dbmi.h:99
#define DB_SQL_TYPE_SMALLINT
Definition dbmi.h:80
#define DB_DATETIME_MASK
Definition dbmi.h:102
#define DB_SQL_TYPE_NUMERIC
Definition dbmi.h:85
#define DB_SQL_TYPE_INTERVAL
Definition dbmi.h:89
#define DB_MONTH
Definition dbmi.h:96
#define DB_YEAR
Definition dbmi.h:95
#define DB_SQL_TYPE_REAL
Definition dbmi.h:82
#define DB_SQL_TYPE_DOUBLE_PRECISION
Definition dbmi.h:83
#define DB_SQL_TYPE_DECIMAL
Definition dbmi.h:84
#define DB_SQL_TYPE_DATE
Definition dbmi.h:86
#define DB_HOUR
Definition dbmi.h:98
#define DB_SQL_TYPE_SERIAL
Definition dbmi.h:92
#define DB_SQL_TYPE_CHARACTER
Definition dbmi.h:79
#define DB_SQL_TYPE_TIMESTAMP
Definition dbmi.h:88
#define DB_DAY
Definition dbmi.h:97
#define DB_SECOND
Definition dbmi.h:100
void db_interval_range(int, int *, int *)
Define range based on SQL data type.
Definition interval.c:22
#define strcpy
Definition parson.c:66
const char * db_sqltype_name(int sqltype)
Get SQL data type description.
Definition sqltype.c:23