]> git.pld-linux.org Git - packages/sqlite3.git/blame - sqlite3-sign-function.patch
- a tiny, but useful function
[packages/sqlite3.git] / sqlite3-sign-function.patch
CommitLineData
b3a6c129
1diff -uNr sqlite-3.2.7.orig/src/func.c sqlite-3.2.7/src/func.c
2--- sqlite-3.2.7.orig/src/func.c 2005-09-17 18:34:55.000000000 +0200
3+++ sqlite-3.2.7/src/func.c 2005-10-17 00:11:22.000000000 +0200
4@@ -139,6 +139,31 @@
5 }
6
7 /*
8+** Implementation of the sign() function
9+*/
10+static void signFunc(sqlite3_context *context, int argc, sqlite3_value **argv){
11+ assert( argc==1 );
12+ switch( sqlite3_value_type(argv[0]) ){
13+ case SQLITE_INTEGER: {
14+ i64 iVal = sqlite3_value_int64(argv[0]);
15+ iVal = (iVal > 0)? 1 : (iVal < 0)? -1 : 0;
16+ sqlite3_result_int64(context, iVal);
17+ break;
18+ }
19+ case SQLITE_NULL: {
20+ sqlite3_result_null(context);
21+ break;
22+ }
23+ default: {
24+ double rVal = sqlite3_value_double(argv[0]);
25+ rVal = (rVal > 0)? 1.0 : (rVal < 0)? -1.0 : 0;
26+ sqlite3_result_double(context, rVal);
27+ break;
28+ }
29+ }
30+}
31+
32+/*
33 ** Implementation of the substr() function
34 */
35 static void substrFunc(
36@@ -963,6 +988,7 @@
37 { "substr", 3, 0, SQLITE_UTF16LE, 0, sqlite3utf16Substr },
38 #endif
39 { "abs", 1, 0, SQLITE_UTF8, 0, absFunc },
40+ { "sign", 1, 0, SQLITE_UTF8, 0, signFunc },
41 { "round", 1, 0, SQLITE_UTF8, 0, roundFunc },
42 { "round", 2, 0, SQLITE_UTF8, 0, roundFunc },
43 { "upper", 1, 0, SQLITE_UTF8, 0, upperFunc },
This page took 0.07558 seconds and 4 git commands to generate.