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() {