s4
changeset 636:b73ef3fd0e19
Table update done in 1 .read outside of shell loop.
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Wed, 29 Apr 2020 19:03:17 +0900 |
parents | ae37fefb7a2b |
children | 2b1339d50b30 |
files | s4-funcs.sh |
diffstat | 1 files changed, 36 insertions(+), 11 deletions(-) [+] |
line diff
1.1 --- a/s4-funcs.sh Wed Apr 29 18:28:47 2020 +0900 1.2 +++ b/s4-funcs.sh Wed Apr 29 19:03:17 2020 +0900 1.3 @@ -3550,6 +3550,7 @@ 1.4 ## Insertion to master table, done 1.5 fi 1.6 1.7 + transaction=$tmpd/sqlfile.sql; touch $transaction 1.8 for kt in s m; do 1.9 tb2=${tbl}_$kt 1.10 for col in `gettbl_${kt}_cols $tbl`; do 1.11 @@ -3606,15 +3607,25 @@ 1.12 1.13 if [ x"$bin" = x"NULL" ]; then 1.14 ## err repl:normal sql=`echo $sql` 1.15 - query "$sql 1.16 -delete from $tb2 where type='string' and val='';" 1.17 - ## err repl:normal done 1.18 + if [ -n "$transaction" ]; then 1.19 + cat<<-EOF >> $transaction 1.20 + $sql 1.21 + DELETE FROM $tb2 WHERE type='string' AND val=''; 1.22 + EOF 1.23 + else 1.24 + query "$sql 1.25 +delete from $tb2 where type='string' and val='';" 1.26 + ## err repl:normal done 1.27 + fi 1.28 else 1.29 + # Binary update line is TOO LONG to pipelining 1.30 sqlfile="$tmpd/sqlf.$$" 1.31 - echo "$sql" > $sqlfile 1.32 - ## err repl:sqlfile=`ls -lF $sqlfile` 1.33 - query ".read $sqlfile" 1.34 - ## err repl:done 1.35 + if [ -n "$transaction" ]; then 1.36 + echo "$sql" >> $transaction 1.37 + else 1.38 + echo "$sql" > $sqlfile 1.39 + query ".read $sqlfile" 1.40 + fi 1.41 fi 1.42 # Rest of kt==m: set multiple mode 1.43 nr=`getparcount $col` 1.44 @@ -3674,18 +3685,32 @@ 1.45 sql="replace into $tb2 values($pval, \"$col\", $type, $val, $bin);" 1.46 if [ x"$bin" = x"NULL" ]; then 1.47 ## err Normal-query: `echo $sql` 1.48 - query "$sql" 1.49 + if [ -n "$transaction" ]; then 1.50 + echo "$sql" >> $transaction 1.51 + else 1.52 + query "$sql" 1.53 + fi 1.54 else 1.55 sqlfile="$tmpd/query.$$" 1.56 - echo "$sql" > $sqlfile 1.57 ## err sqlfile=`ls -lF $sqlfile` 1.58 - query ".read $sqlfile" 1.59 + if [ -n "$transaction" ]; then 1.60 + echo "$sql" >> $transaction 1.61 + else 1.62 + echo "$sql" > $sqlfile 1.63 + query ".read $sqlfile" 1.64 + fi 1.65 fi 1.66 ## err p2t done 1.67 done 1.68 done 1.69 done 1.70 - return 0 1.71 + [ -n "$transaction" -a -s "$transaction" ] && cat <<-EOF | query 1.72 + -- We cannot use transaction here, because groupupdate may use it. 1.73 + SAVEPOINT pa2table_insert; 1.74 + .read $transaction 1.75 + RELEASE SAVEPOINT pa2table_insert; 1.76 + EOF 1.77 + return $? 1.78 ##err donee 1.79 ) 1.80 genform() {