don't encourage sqlite to store floating point values as text

This commit is contained in:
Vincent Riquer 2013-03-11 13:33:50 +01:00
parent 58b9d78afa
commit 5154f61f1b

50
atom
View File

@ -38,6 +38,8 @@ declare -r \
\
oldIFS="$IFS"
shopt -s extglob
#parse arguments
OPTERR=0
while getopts ':c:l:T:F:hD' opt
@ -273,7 +275,7 @@ openDatabase() {
fi
sqlite3 "$database" < $schema
fi
sqlite3 "$database" \
sqlite3 -bail "$database" \
< "$tempdir/sqlite.in" \
> "$tempdir/sqlite.out" &
exec 3> "$tempdir"/sqlite.in
@ -346,12 +348,17 @@ Insert() {
(( ${#insert_keys} )) && insert_keys+=","
insert_keys+='`'"$key"'`'
(( ${#insert_values} )) && insert_values+=","
if [[ $value == NULL ]]
then
insert_values+="NULL"
else
insert_values+='"'"${value//\"/\"\"}"'"'
fi
case $value in
'NULL')
insert_values+="NULL"
;;
+([0-9])?(.+([0-9])))
insert_values+=$value
;;
*)
insert_values+='"'"${value//\"/\"\"}"'"'
;;
esac
done
echo "INSERT INTO $table" \
"( $insert_keys )" \
@ -389,7 +396,17 @@ Update(){
what=value
;;
value)
set_statement="${set_statement}="'"'"${argument//\"/\"\"}"'"'
case $argument in
'NULL')
set_statement+=" is NULL"
;;
+([0-9])?(.+([0-9])))
set_statement+=" = $argument"
;;
*)
set_statement+=" = "'"'"${argument//\"/\"\"}"'"'
;;
esac
what=key
;;
esac
@ -397,12 +414,17 @@ Update(){
while read key operator value
do
(( ${#where_statement} )) && where_statement+=( "AND" )
if [[ $value == NULL ]]
then
where_statement+=( "$key is NULL" )
else
where_statement+=( "$key $operator "'"'"${value//\"/\"\"}"'"' )
fi
case $value in
'NULL')
where_statement+=( "$key is NULL" )
;;
+([0-9.]))
where_statement+=( "$key $operator $value" )
;;
*)
where_statement+=( "$key $operator "'"'"${value//\"/\"\"}"'"' )
;;
esac
done
echo "UPDATE '$table' SET" \
"$set_statement" \