Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add optional Citus support #302

Merged
merged 3 commits into from
Jan 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/postgresql.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<pg_vacuum>false</pg_vacuum>
<pg_dritasnap>false</pg_dritasnap>
<pg_oracompat>false</pg_oracompat>
<pg_cituscompat>false</pg_cituscompat>
<pg_storedprocs>false</pg_storedprocs>
<pg_partition>false</pg_partition>
</schema>
Expand Down
538 changes: 269 additions & 269 deletions modules/tpcccommon-1.0.tm

Large diffs are not rendered by default.

816 changes: 408 additions & 408 deletions modules/tpchcommon-1.0.tm

Large diffs are not rendered by default.

1,950 changes: 975 additions & 975 deletions src/db2/db2olap.tcl

Large diffs are not rendered by default.

4,154 changes: 2,077 additions & 2,077 deletions src/db2/db2oltp.tcl

Large diffs are not rendered by default.

1,416 changes: 708 additions & 708 deletions src/db2/db2opt.tcl

Large diffs are not rendered by default.

262 changes: 131 additions & 131 deletions src/db2/db2otc.tcl
Original file line number Diff line number Diff line change
@@ -1,134 +1,134 @@
proc tcount_db2 {bm interval masterthread} {
global tc_threadID
upvar #0 dbdict dbdict
if {[dict exists $dbdict db2 library ]} {
set library [ dict get $dbdict db2 library ]
} else { set library "db2tcl" }
#Setup Transaction Counter Thread
set tc_threadID [thread::create {
proc read_more { MASTER library db2_user db2_pass db2_dbase db2_tpch_user db2_tpch_pass db2_tpch_dbase interval old tce bm } {
set timeout 0
set iconflag 0
if { $interval <= 0 } { set interval 10 }
set gcol "green"
if { ![ info exists tcdata ] } { set tcdata {} }
if { ![ info exists timedata ] } { set timedata {} }
if { $bm eq "TPC-C" } {
set sqc "select total_app_commits + total_app_rollbacks from sysibmadm.mon_db_summary"
set tmp_db2_user $db2_user
set tmp_db2_pass $db2_pass
set tmp_db2_dbase $db2_dbase
set tval 60
} else {
set sqc "select act_completed_total from sysibmadm.mon_db_summary"
set tmp_db2_user $db2_tpch_user
set tmp_db2_pass $db2_tpch_pass
set tmp_db2_dbase $db2_tpch_dbase
set tval 3600
global tc_threadID
upvar #0 dbdict dbdict
if {[dict exists $dbdict db2 library ]} {
set library [ dict get $dbdict db2 library ]
} else { set library "db2tcl" }
#Setup Transaction Counter Thread
set tc_threadID [thread::create {
proc read_more { MASTER library db2_user db2_pass db2_dbase db2_tpch_user db2_tpch_pass db2_tpch_dbase interval old tce bm } {
set timeout 0
set iconflag 0
if { $interval <= 0 } { set interval 10 }
set gcol "green"
if { ![ info exists tcdata ] } { set tcdata {} }
if { ![ info exists timedata ] } { set timedata {} }
if { $bm eq "TPC-C" } {
set sqc "select total_app_commits + total_app_rollbacks from sysibmadm.mon_db_summary"
set tmp_db2_user $db2_user
set tmp_db2_pass $db2_pass
set tmp_db2_dbase $db2_dbase
set tval 60
} else {
set sqc "select act_completed_total from sysibmadm.mon_db_summary"
set tmp_db2_user $db2_tpch_user
set tmp_db2_pass $db2_tpch_pass
set tmp_db2_dbase $db2_tpch_dbase
set tval 3600
}
set mplier [ expr {$tval / $interval} ]
if {[catch {package require $library} message]} {
tsv::set application tc_errmsg "failed to load library $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
if [catch {::tcl::tm::path add modules} message] {
tsv::set application tc_errmsg "failed to find modules $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
if [catch {package require tcountcommon} message ] {
tsv::set application tc_errmsg "failed to load common transaction counter functions $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
} else {
namespace import tcountcommon::*
}
if {[catch {set db_handle [db2_connect $tmp_db2_dbase $tmp_db2_user $tmp_db2_pass]} message]} {
tsv::set application tc_errmsg "connection failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
#Enter loop until stop button pressed
while { $timeout eq 0 } {
set timeout [ tsv::get application timeout ]
if { $timeout != 0 } { break }
if {[catch { set stmnt_handle1 [ db2_select_direct $db_handle $sqc ]} message]} {
tsv::set application tc_errmsg "sql failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
if {[catch {set outc [db2_fetchrow $stmnt_handle1 ]} message]} {
tsv::set application tc_errmsg "sql fetch failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
if {[catch {db2_finish $stmnt_handle1} message]} {
tsv::set application tc_errmsg "handle close failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
set new $outc
set tstamp [ clock format [ clock seconds ] -format %H:%M:%S ]
set tcsize [ llength $tcdata ]
if { $tcsize eq 0 } {
set newtick 1
lappend tcdata $newtick 0
lappend timedata $newtick $tstamp
if { [ catch {thread::send -async $MASTER {::showLCD 0 }}] } { break }
} else {
if { $tcsize >= 40 } {
set tcdata [ downshift $tcdata ]
set timedata [ downshift $timedata ]
set newtick 20
} else {
set newtick [ expr {$tcsize / 2 + 1} ]
if { $newtick eq 2 } {
set tcdata [ lreplace $tcdata 0 1 1 [expr {[expr {abs($new - $old)}] * $mplier}] ]
}
}
lappend tcdata $newtick [expr {[expr {abs($new - $old)}] * $mplier}]
lappend timedata $newtick $tstamp
if { ![ isdiff $tcdata ] } {
set tcdata [ lreplace $tcdata 1 1 0 ]
}
set transval [expr {[expr {abs($new - $old)}] * $mplier}]
if { [ catch [ subst {thread::send -async $MASTER {::showLCD $transval }} ] ] } { break }}
if { $tcsize >= 4 } {
if { $iconflag eq 0 } {
if { [ catch [ subst {thread::send -async $MASTER { .ed_mainFrame.tc.g delete "all" }} ] ] } { break }
set iconflag 1
}
if { [ zeroes $tcdata ] eq 0 } {
set tcdata {}
set timedata {}
if { [ catch {thread::send -async $MASTER { tce destroy }}]} { break }
} else {
if { [ catch [ subst {thread::send -async $MASTER { tce data d1 -colour $gcol -points 0 -lines 1 -coords {$tcdata} -time {$timedata} }} ] ] } { break }
}
}
set old $new
set pauseval $interval
for {set pausecount $pauseval} {$pausecount > 0} {incr pausecount -1} {
if { [ tsv::get application timeout ] } { break } else { after 1000 }
}
}
eval [ subst {thread::send -async $MASTER { post_kill_transcount_cleanup }} ]
thread::release
}
set mplier [ expr {$tval / $interval} ]
if {[catch {package require $library} message]} {
tsv::set application tc_errmsg "failed to load library $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
if [catch {::tcl::tm::path add modules} message] {
tsv::set application tc_errmsg "failed to find modules $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
if [catch {package require tcountcommon} message ] {
tsv::set application tc_errmsg "failed to load common transaction counter functions $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
} else {
namespace import tcountcommon::*
}
if {[catch {set db_handle [db2_connect $tmp_db2_dbase $tmp_db2_user $tmp_db2_pass]} message]} {
tsv::set application tc_errmsg "connection failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
thread::release
return
}
#Enter loop until stop button pressed
while { $timeout eq 0 } {
set timeout [ tsv::get application timeout ]
if { $timeout != 0 } { break }
if {[catch { set stmnt_handle1 [ db2_select_direct $db_handle $sqc ]} message]} {
tsv::set application tc_errmsg "sql failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
if {[catch {set outc [db2_fetchrow $stmnt_handle1 ]} message]} {
tsv::set application tc_errmsg "sql fetch failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
if {[catch {db2_finish $stmnt_handle1} message]} {
tsv::set application tc_errmsg "handle close failed $message"
eval [subst {thread::send $MASTER show_tc_errmsg}]
catch { db2_disconnect $db_handle }
break
}
set new $outc
set tstamp [ clock format [ clock seconds ] -format %H:%M:%S ]
set tcsize [ llength $tcdata ]
if { $tcsize eq 0 } {
set newtick 1
lappend tcdata $newtick 0
lappend timedata $newtick $tstamp
if { [ catch {thread::send -async $MASTER {::showLCD 0 }}] } { break }
} else {
if { $tcsize >= 40 } {
set tcdata [ downshift $tcdata ]
set timedata [ downshift $timedata ]
set newtick 20
} else {
set newtick [ expr {$tcsize / 2 + 1} ]
if { $newtick eq 2 } {
set tcdata [ lreplace $tcdata 0 1 1 [expr {[expr {abs($new - $old)}] * $mplier}] ]
}
}
lappend tcdata $newtick [expr {[expr {abs($new - $old)}] * $mplier}]
lappend timedata $newtick $tstamp
if { ![ isdiff $tcdata ] } {
set tcdata [ lreplace $tcdata 1 1 0 ]
}
set transval [expr {[expr {abs($new - $old)}] * $mplier}]
if { [ catch [ subst {thread::send -async $MASTER {::showLCD $transval }} ] ] } { break }}
if { $tcsize >= 4 } {
if { $iconflag eq 0 } {
if { [ catch [ subst {thread::send -async $MASTER { .ed_mainFrame.tc.g delete "all" }} ] ] } { break }
set iconflag 1
}
if { [ zeroes $tcdata ] eq 0 } {
set tcdata {}
set timedata {}
if { [ catch {thread::send -async $MASTER { tce destroy }}]} { break }
} else {
if { [ catch [ subst {thread::send -async $MASTER { tce data d1 -colour $gcol -points 0 -lines 1 -coords {$tcdata} -time {$timedata} }} ] ] } { break }
}
}
set old $new
set pauseval $interval
for {set pausecount $pauseval} {$pausecount > 0} {incr pausecount -1} {
if { [ tsv::get application timeout ] } { break } else { after 1000 }
}
}
eval [ subst {thread::send -async $MASTER { post_kill_transcount_cleanup }} ]
thread::release
}
thread::wait
}]
#Setup Transaction Counter Connection Variables
upvar #0 configdb2 configdb2
setlocaltcountvars $configdb2 1
set old 0
#Call Transaction Counter to start read_more loop
eval [ subst {thread::send -async $tc_threadID { read_more $masterthread $library $db2_user $db2_pass $db2_dbase $db2_tpch_user $db2_tpch_pass $db2_tpch_dbase $interval $old tce $bm }}]
thread::wait
}]
#Setup Transaction Counter Connection Variables
upvar #0 configdb2 configdb2
setlocaltcountvars $configdb2 1
set old 0
#Call Transaction Counter to start read_more loop
eval [ subst {thread::send -async $tc_threadID { read_more $masterthread $library $db2_user $db2_pass $db2_dbase $db2_tpch_user $db2_tpch_pass $db2_tpch_dbase $interval $old tce $bm }}]
}
Loading