Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • emsmith/athena
  • dzubov/athena
  • pscholer/athena
  • akvam/athena
  • flasagni/athena
  • hartman/athena
  • alux/athena
  • berenice/athena
  • mschott/athena
  • mgenest/athena
  • pbalek/athena
  • dsalvato/athena
  • korcyl/athena
  • tlyubush/athena
  • lyubushk/athena
  • gstark/athena
  • yharris/athena
  • lmonsoni/athena
  • nagano/athena
  • lcorpe/athena
  • lshi/athena
  • rrosten/athena
  • ytsujika/athena
  • tiledemo/athena
  • abagdato/athena
  • fparodi/athena
  • tmoxter/athena
  • lheinric/athena
  • milu/athena
  • pyin/athena
  • juesseiv/athena-celeritas
  • mmlynari/athena
  • matthier/athena
  • jsandesa/athena
  • borisov/athena
  • zchubini/athena
  • mpenzin/athena
  • mcorradi/athena
  • okovanda/athena
  • meevans/athena
  • isiral/athena
  • haa2mu2tau/athena
  • nkvu/athena
  • andre/athena
  • ebakos/athena
  • gwmyers/athena
  • lportale/athena
  • vasothil/athena
  • bwinter/athena
  • brle/athena
  • camacho/athena
  • icioara/athena
  • mcentonz/athena
  • quli/athena
  • mikhail/athena
  • begilber/athena
  • gartoni/athena
  • abkahn/athena
  • mbasso/athena
  • pagacova/athena
  • dgancarc/athena
  • stefania/athena
  • gmarchio/athena
  • jolsson/athena
  • atlasdqm/athena
  • chuanshu/athena
  • yygao/athena
  • shimoji/athena
  • zhenw/athena
  • jojamies/athena
  • keli/athena
  • cnass/athena
  • beckerov/athena
  • passaggi/athena
  • marvin/athena
  • hdf5-utils/athena
  • pberta/athena
  • aaboulho/athena
  • acrobert/athena
  • ranjitn/athena
  • cescobar/athena
  • ktodome/athena
  • kastanas/athena
  • huirun/athena
  • atrzupek/athena
  • tzorbas/athena
  • lfountas/athena
  • ccarrion/athena
  • aambler/athena
  • derendar/athena
  • britzger/athena
  • hanl/athena
  • epender/athena
  • gipezzul/athena
  • mmineev/athena
  • robertma/athena
  • gnn4itkteam/athena
  • phkoenig/athena
  • pleier/athena
  • nguseyno/athena
  • nekumari/athena
  • avasyuko/athena
  • gtateno/athena
  • pavel/athena
  • reznicek/athena
  • aburke/athena
  • jiling/athena
  • jcordeir/athena
  • herrmant/athena
  • lmcelhin/athena
  • xuh/athena
  • averbyts/athena
  • tnommens/athena
  • ewallin/athena
  • tvazquez/athena
  • shbansal/athena
  • gascott/athena
  • yuhui/athena
  • lserkin/athena
  • ccaminch/athena
  • corentin/athena
  • miochoa/athena
  • berkeleylab/CharmPhysics/athena
  • cdiez/athena
  • cpollard/athena
  • hfox/athena
  • madurano/athena_gittutorial
  • msykora/athena
  • ckirfel/athena
  • jakoubek/athena
  • calfayan/athena
  • kjohns/athena
  • atlas/athena
  • toshi/athena
  • dguest/athena
  • fwinkl/athena
  • wlampl/athena
  • aundrus/athena
  • akraszna/athena
  • karolos/athena
  • jmontejo/athena
  • damazio/athena
  • okuprash/athena
  • smh/athena
  • turra/athena
  • tdado/athena
  • tadej/athena
  • abuckley/athena
  • jmasik/athena
  • pjacka/athena
  • tamartin/athena
  • tbold/athena
  • mhodgkin/athena
  • nstyles/athena
  • mark/athena
  • rhauser/athena
  • phwindis/athena
  • arnaez/athena
  • baines/athena
  • mmuskinj/athena
  • psommer/athena
  • bwynne/athena
  • tstreble/athena
  • ATLAS-EGamma/athena
  • yuxu/athena
  • toyamaza/athena
  • gemmeren/athena
  • ssnyder/athena
  • wwalko/athena
  • emoyse/athena
  • pgadow/athena
  • solodkov/athena
  • rbielski/athena
  • dcasper/athena
  • mrybar/athena
  • ychiu/athena
  • christos/athena
  • yoyamagu/athena
  • rbianchi/athena
  • graemes/athena
  • sshaw/athena
  • shlomit/athena
  • hartj/athena
  • jcatmore/athena
  • ebuschma/athena
  • gunal/athena
  • ewelina/athena
  • ligang/athena
  • sroe/athena
  • lfiorini/athena
  • longjon/athena
  • jichen/athena
  • nikiforo/athena
  • fpastore/athena
  • harkusha/athena
  • mvozak/athena
  • leggett/athena
  • martindl/athena
  • tlari/athena
  • susinha/athena
  • filthaut/athena
  • cchan/athena
  • peter/athena
  • cvarni/athena
  • wleight/athena
  • nwarrack/athena
  • cshimmin/athena
  • mihuebne/athena
  • jsallen/athena-high-pt-ms-jets
  • dkar/athena
  • chays/athena
  • dtovey/athena
  • sgeorge/athena
  • yafu/athena
  • mgignac/athena
  • alfroch/athena
  • mstamenk/athena
  • okepka/athena
  • tkohno/athena
  • janovak/athena
  • wiedenat/athena
  • khoo/athena
  • maklein/athena
  • cohm/athena
  • omajersk/athena
  • dbakshig/athena
  • fernando/athena
  • tmkrtchy/athena
  • gingrich/athena
  • schaarsc/athena
  • ponyisi/athena
  • ravinab/athena
  • scheiric/athena
  • pleskot/athena
  • jobalz/athena
  • ebergeas/athena
  • ekasimi/athena
  • afaulkne/athena
  • ekuwertz/athena
  • xai/athena
  • merrenst/athena
  • goetz/athena
  • dpopov/athena
  • achishol/athena
  • alaurier/athena
  • mtoscani/athena
  • krumnack/athena
  • astruebi/athena
  • mdanning/athena
  • egramsta/athena
  • hye/athena
  • clseitz/athena
  • bmindur/athena
  • efilmer/athena
  • jpanduro/athena
  • ssarikay/athena
  • hyamauch/athena
  • ppostola/athena
  • shanisch/athena
  • ncalace/athena
  • aad/athena
  • gpanizzo/athena
  • rcoelhol/athena
  • tupham/athena
  • stelzer/athena
  • ssottoco/athena
  • turnerm/athena
  • sutt/athena
  • nkrengel/athena
  • rkopelia/athena
  • cmcginn/athena
  • bernius/athena
  • tsulaia/athena
  • vcairo/athena
  • stsuno/athena
  • yunju/athena
  • ldc/athena
  • jmacdona/athena
  • mbandier/athena
  • mehlhase/athena
  • jdandoy/athena
  • jufische/athena
  • dzanzi/athena
  • kzoch/athena
  • nasbah/athena
  • kwhalen/athena
  • bmorgan/athena
  • msaimper/athena
  • amete/athena
  • rcarney/athena
  • williams/athena
  • shhirose/athena
  • cheidegg/athena
  • heng/athena
  • hhibi/athena
  • kkohler/athena
  • coccaro/athena
  • loch/athena
  • cdeutsch/athena
  • ynoguchi/athena
  • campanel/athena
  • wbalunas/athena
  • hoide/athena
  • xju/athena
  • yuchou/athena
  • nova/athena
  • todorova/athena
  • sjiggins/athena
  • bgokturk/athena
  • aytul/athena
  • hrussell/athena
  • lidiaz/athena
  • almaloiz/athena
  • jbiswal/athena
  • kegraham/athena
  • guerrero/athena
  • bouhova/athena
  • alwang/athena
  • mverissi/athena
  • dhayden/athena
  • kpachal/athena
  • alopezso/athena
  • mvessell/athena
  • ssantpur/athena
  • kenelson/athena
  • upatel/athena
  • omeshkov/athena
  • soumya/athena
  • mvanadia/athena
  • ruyuan/athena
  • igrabows/athena
  • tvarol/athena
  • dshope/athena
  • fmeloni/athena
  • korona/athena
  • mhank/athena
  • cowagner/athena
  • tursom/athena
  • dbogavac/athena
  • tnobe/athena
  • anperrev/athena
  • fsforza/athena
  • derue/athena
  • eramakot/athena
  • koffas/athena
  • angianni/athena
  • ballbroo/athena
  • diehl/athena
  • chinderk/athena
  • fgiuli/athena
  • myexley/athena
  • davidek/athena
  • falonso/athena
  • hansenph/athena
  • mfujimot/athena
  • salvator/athena
  • hirose/athena
  • tphamleh/athena
  • masato/athena
  • jhaley/athena
  • ekajomov/athena-general
  • stapiaar/athena
  • jmendes/athena
  • sarbiolv/athena
  • nwenke/athena
  • ffabbri/athena
  • tpelzer/athena
  • agbet/athena
  • stavrop/athena
  • dbabal/athena
  • juesseiv/athena
  • gia/athena
  • cdelitzs/athena
  • hmildner/athena
  • temoskal/athena
  • dwallace/athena
  • eschanet/athena
  • asonay/athena
  • kkrizka/athena
  • ckitsaki/athena
  • lferencz/athena
  • czhou/athena
  • jiawei/athena
  • iaizenbe/athena
  • mromano/athena
  • rustem/athena
  • sswatman/athena
  • pmeiring/athena
  • miqueits/athena
  • liberato/athena
  • jteoh/athena
  • wachan/athena
  • ranovotn/athena
  • elmsheus/athena
  • jbeirer/athena
  • asquith/athena
  • nicholas/athena
  • nielsenj/athena
  • markowen/athena
  • fuhe/athena
  • eparrish/athena
  • dakoch/athena
  • mhance/athena
  • aranzazu/athena
  • ndegroot/athena
  • lihan/athena
  • esoldato/athena
  • asoukhar/athena
  • jkempste/athena
  • tjunkerm/athena
  • ginaciog/athena
  • verducci/athena
  • aporeba/athena
  • martis/athena
  • mswiatlo/athena
  • anmrodri/athena
  • sschramm/athena
  • mdelmast/athena
  • pliu/athena
  • bcarlson/athena
  • ssaha/athena
  • gabarone/athena
  • fastcalosim_test/athena
  • scamarda/athena
  • mxia/athena
  • lstocker/athena
  • guindon/athena
  • rlongo/athena
  • amoussa/athena
  • chelling/athena
  • mmittal/athena
  • mdonasci/athena
  • ffollega/athena
  • gialas/athena
  • fcostanz/athena
  • conde/athena
  • shion/athena
  • sberlend/athena
  • acts/athena
  • cgutscho/athena
  • hmaguire/athena
  • sschmitt/athena
  • nifomin/athena
  • eriefel/athena
  • dwilbern/athena
  • zsoumaim/athena
  • laforge/athena
  • evarnes/athena
  • jkremer/athena
  • susy-hackers/athena
  • llorente/athena
  • guescini/athena
  • haozturk/athena
  • kkoeneke/athena
  • rpoggi/athena
  • istin/athena
  • akotsoke/athena
  • acanesse/athena
  • fengyu/athena
  • fizisist/athena
  • chenlian/athena
  • cmerlass/athena
  • ysmirnov/athena_old
  • rkarnam/athena
  • ivivarel/athena
  • amulski/athena
  • navarrjo/athena
  • pkramer/athena
  • vcavalie/athena
  • bulekov/athena
  • yanlin/athena
  • sanchevi/athena
  • restevam/athena
  • smwang/athena
  • bauerpa/athena
  • sefernan/athena
  • thsjurse/athena
  • mmlynars/athena
  • iyeletsk/athena
  • itrandaf/athena
  • mmazza/athena
  • jgonski/athena
  • almgadm/athena
  • wobisch/athena
  • jhinds/athena
  • csebasti/athena
  • mtchijov/athena
  • tiyang/athena
  • mwielers/athena
  • lapereir/athena
  • aleopold/athena
  • emmat/athena
  • zuysal/athena
  • lmiller/athena
  • rbalasub/athena
  • lucam/athena
  • somadutt/athena
  • kciesla/athena
  • pekman/athena
  • salderwe/athena
  • jstupak/athena
  • masaito/athena
  • wmccorma/athena
  • simmons/athena
  • adye/athena
  • kkreul/athena
  • ycoadou/athena
  • ilongari/athena
  • wtaylor/athena
  • kbelobor/athena
  • pinamont/athena
  • aoneill/athena
  • ssahin/athena
  • jzeng/athena
  • dmaximov/athena
  • fbartels/athena
  • kghorban/athena
  • gcallea/athena
  • cschiavi/athena
  • ljeanty/athena
  • jraine/athena
  • mcfayden/athena
  • brottler/athena
  • kasai/athena
  • scarra/athena
  • khanov/athena
  • abandyop/athena
  • rozeny/athena
  • ecarlson/athena
  • gotero/athena
  • aelmouss/athena
  • nbelyaev/athena
  • aohatl/athena
  • amarzin/athena
  • joheinri/athena
  • doglioni/athena
  • rebeca/athena
  • rgarg/athena
  • bigliett/athena
  • alaperto/athena
  • dpudzha/athena
  • bhonan/athena
  • paulama/athena
  • mtesta/athena
  • pmoskvit/athena
  • begalli/athena
  • jajimene/athena
  • yajun/athena
  • atlidali/athena
  • vcroft/athena
  • lbozianu/athena
  • mpokidov/athena
  • torrence/athena
  • wprzygod/athena
  • sgalantz/athena
  • demelian/athena
  • hacooke/athena
  • tofitsch/athena
  • barak/athena
  • salnikov/athena
  • roward/athena
  • amoroso/athena
  • atsirigo/athena
  • mmiralle/athena
  • csander/athena
  • alory/athena
  • ozaplati/athena
  • elrossi/athena
  • pbokan/athena
  • jsabater/athena
  • pottgen/athena
  • ymino/athena
  • jdevivi/athena
  • xchen/athena
  • klin/athena
  • apetukho/athena
  • trinn/athena
  • xiaoning/athena
  • ruth/athena
  • ratkin/athena
  • cappelt/athena
  • nishu/athena
  • paramon/athena
  • enarayan/athena
  • exot-27/athena
  • bleban/athena
  • dpizzi/athena
  • nelsonc/athena
  • qhu/athena
  • juhofer/athena
  • ztarem/athena
  • mkrivos/athena
  • sampson/athena
  • acassim/athena
  • bburghgr/athena
  • mmarjano/athena
  • hessey/athena
  • pagessin/athena
  • ychow/athena
  • nviauxma/athena
  • watsona/athena
  • wfawcett/athena
  • ibordule/athena
  • LichtenbergGroup/athena
  • perj/athena
  • mleblanc/athena
  • jreich/athena
  • othielma/athena
  • sridouan/athena
  • jdegens/athena
  • ztao/athena
  • alainb/athena
  • pmendesa/athena
  • hasada/athena
  • wgeorge/athena
  • kristin/athena
  • yama/athena
  • bachacou/athena
  • xiaohu/athena
  • ssu/athena
  • ludovica/athena
  • yake/athena
  • musafdar/athena
  • jlsmith/athena
  • ktsuri/athena
  • angerami/athena
  • pebaron/athena-weights
  • rnayak/athena
  • jezequel/athena
  • hschwart/athena
  • mproffit/athena
  • asalzbur/athena
  • amendesj/athena
  • csamoila/athena
  • gproto/athena
  • rerrabai/athena
  • tiany/athena
  • malgren/athena
  • lhelary/athena
  • mprincip/athena
  • aczirkos/athena
  • spolacek/athena
  • lbeemste/athena
  • kyamaguc/athena
  • bmondal/athena
  • jreidels/athena
  • asantra/athena
  • grabanal/athena
  • jroloff/athena
  • tboeckh/athena
  • silvinha/athena
  • slawlor/athena
  • holau/athena
  • mdhlamin/athena
  • tdiasdov/athena
  • bozek/athena
  • carlod/athena
  • lkrauth/athena
  • emily/athena
  • bbrueers/athena
  • iramirez/athena
  • bcole/athena
  • mtian/athena
  • ecelebi/athena
  • oducu/athena
  • mgrabois/athena
  • idinu/athena
  • roishi/athena
  • ygo/athena
  • dhirsch/athena
  • jjwilkin/athena
  • exochell/athena
  • yuanchan/athena
  • hmoyanog/athena-4-mr
  • sbiryuko/athena
  • ggustavi/athena
  • honguyen/athena
  • diwillia/athena
  • skorn/athena
  • jwspence/athena
  • scalvet/athena
  • cgarner/athena
  • changqia/athena
  • calpigia/athena
  • yangx/athena
  • atsiamis/athena
  • jizamora/athena
  • dhangal/athena
  • adimitri/athena
  • rysawada/athena
  • atlidbs/athena
  • cmarcon/athena
  • tbisanz/athena
  • kpetukho/athena
  • iene/athena
  • jspah/athena
  • athaler/athena
  • tqiu/athena
  • dopasqua/athena
  • jcardena/athena
  • jkretz/athena
  • tzenis/athena
  • hzuchen/athena
  • oshukrun/athena
  • lveloce/athena
  • maliev/athena
  • ryamaguc/athena
  • tsano/athena
  • fdelrio/athena
  • mumohdso/athena2
  • sagara17/athena
  • iwang/athena
  • mumohdso/athena
  • okumura/athena
  • mbiros/athena
  • arennie/athena
  • dmunozpe/athena
  • valentem/athena
  • atate/athena
  • rhayes/athena
  • koshimiz/athena
  • zearnsha/athena
  • evguillo/athena
  • caforio/athena
  • dossantn/athena
  • maly/athena
  • zhijie/athena
  • bnachman/athena
  • yuzhan/athena
  • suyounas/athena
  • lunedic/athena
  • hlin/athena
  • crougier/athena
  • mtost/athena
  • rjoshi/athena
  • machitis/athena
  • lvannoli/athena
  • mimarine/athena
  • omezhens/athena
  • thompson/athena
  • ndebiase/athena
  • jonierma/athena
  • echeu/athena
  • saclawso/athena
  • dounwuch/athena
  • nkakati/athena
  • cprat/athena
  • martinpa/athena
  • mischott/athena
  • hhanif/athena
  • tiknight/athena
  • csauer/athena
  • inaryshk/athena
  • sahinsoy/athena
  • jodamp/athena
  • lkeszegh/athena
  • fedin/athena
  • wendlanb/athena
  • knikolop/athena
  • pbellos/athena
  • adik/athena
  • jaoliver/athena
  • xchu/athena
  • angrigor/athena
  • lbaltes/athena
  • echeremu/athena
  • idrivask/athena
  • eschopf/athena
  • aikoulou/athena
  • algilber/athena
  • ntamir/athena
  • sadykov/athena
  • ignesi/athena
  • tteixeir/athena
  • pyanezca/athena
  • hiito/athena
  • haweber/athena
  • sgurdasa/athena
  • pamachad/athena
  • mdrozdov/athena
  • pbhattar/athena
  • tavandaa/athena
  • veellajo/athena
  • bsaifudd/athena
  • fsili/athena
  • nheatley/athena
  • wolter/athena
  • fdibello/athena
  • minaenko/athena
  • dparedes/athena
  • mzhai/athena
  • hsimpson/athena
  • chchau/athena
  • mrenda/athena
  • zyan/athena
  • emmarsha/athena
  • rkusters/athena
  • zhangr/athena
  • jburzyns/athena
  • edweik/athena
  • slai/athena
  • zmarshal/athena
  • phkenned/athena
  • awilhahn/athena
  • javanden/athena
  • leevans/athena
  • agaa/athena
  • srdas/athena
  • llaatu/athena
  • stsigari/athena
  • zfeng/athena
  • kkrowpma/athena
  • zifeng/athena
  • adonofri/athena
  • metsai/athena
  • atropina/athena
  • yuanda/athena
  • atlaspmb/athena
  • drousso/athena
  • cleonido/athena
  • arombola/athena
  • seggebre/athena
  • ijuarezr/athena
  • mnoury/athena
  • ademaria/athena
  • eyamashi/athena
  • kchoi/athena
  • axiong/athena
  • dgillber/athena
  • zang/athena
  • saktas/athena
  • amdesai/athena
  • matakagi/athena
  • nlopezca/athena
  • berkeleylab/lowmutracking/athena
  • qibin/athena
  • fbendebb/athena
  • tbuanes/athena
  • acanbay/athena
  • bshresth/athena
  • cbuitrag/athena
  • klassen/athena
  • jferrand/athena
  • egodden/athena
  • otheiner/athena-official
  • mfarring/athena
  • hawatson/athena
  • hpotti/athena
  • parodi/athena
  • dzengerj/athena
  • chonghao/athena
  • vtudorac/athena
  • knakkali/athena
  • bballard/athena
  • dcieri/athena
  • buboehm/athena
  • lmontana/athena
  • zhuyi/athena
  • cimcp/athena
  • cantel/athena
  • adaribay/athena
  • iliadis/athena
  • weixi/athena
  • duperrin/athena
  • kbenkend/athena
  • asansar/athena
  • isotarri/athena
  • frenner/athena
  • jburr/athena
  • mfewell/athena
  • dkoeck/athena
  • eegidiop/athena
  • bstanisl/athena
  • czodrows/athena
  • blumen/athena
  • yulei/athena
  • olangrek/athena
  • miholzbo/athena
  • smitani/athena
  • gshatri/athena
  • alsala/athena
  • amincer/athena
  • jmharris/athena
  • clantz/athena
  • otheiner/athena
  • hpang/athena
  • gripelli/athena
  • mleigh/athena
  • jgargan/athena
  • preselection-hackathon/athena
  • ewatton/athena
  • tizuo/athena
  • deniso/athena
  • rushioda/athena
  • mfernoux/athena
  • sfranche/athena
  • bernardo/athena
  • pebaron/athena-td
  • smeriano/athena
  • chandler/athena
  • jnitschk/athena
  • ksugizak/athena
  • viruelas/athena
  • anghosh/ef-anindya
  • skaur/athena
  • yusano/athena
  • hriani/athena
  • davetisy/athena
  • wsherman/athena
  • rtagami/athena
  • sroygara/athena
  • jgombas/athena
  • vcepaiti/athena
  • yochi/athena
  • apsallid/athena
  • chji/athena
  • pakontax/athena
  • yuanj/athena
  • dmclaugh/athena
  • agavrily/athena
  • dmahon/athena
  • abunka/athena
  • mcgensvc/athena
  • almay/athena
  • giagu/athena
  • cjmeyer/athena
  • islazyk/athena
  • yuwen/athena
  • qberthet/athena
  • mshapiro/athena
  • rdinardo/athena
  • dkobylia/athena
  • ekay/athena
  • mbarel/athena
  • mlanzacb/athena
  • baitbenc/athena
  • dakiyama/athena
  • glamprin/athena
  • osalin/athena
  • cgrefe/athena
  • szambito/athena
  • minlin/athena
  • hwilkens/athena
  • yyap/athena
  • wsfreund/athena
  • kazhang/athena
  • beringer/athena
  • mspalla/athena
  • pebaron/athena
  • fcalosim/athena
  • enagy/athena
  • schaffer/athena
  • smobius/athena
  • mavogel/athena
  • tkharlam/athena
  • menke/athena
  • mduehrss/athena
  • spagan/athena
  • carquin/athena
  • osunnebo/athena
  • rateixei/athena
  • okiverny/athena
  • desilva/athena
  • dportill/athena
  • jelena/athena
  • satom/athena
  • chhayes/athena
  • lmijovic/athena
  • sanmay/athena
  • junpei/athena
  • jwalder/athena
  • jahreda/athena
  • tilebeam/athena
  • kiabelin/athena
  • mcarnesa/athena
  • jstark/athena
  • vtskhaya/athena
  • krbjoerk/athena
  • delsart/athena
  • jedebevc/athena
  • cyoung/athena
  • mtogawa/athena
  • silu/athena
  • yifany/athena
  • jtanaka/athena
  • luxin/athena
  • faser/offline/athena
  • haoran/athena
  • dcasperfaser/athena
  • danning/athena
  • maslawin/athena
  • beddall/athena
  • minghui/athena
  • cfan/athena
  • kazheng/athena
  • almeidvi/athena
  • mmontell/athena
  • vmartin/athena
  • srettie/athena
  • sudha/athena
  • kgupta/athena
  • lhenkelm/athena
  • pajones/athena
  • beltran/athena-fork
  • anbaraja/athena
  • ssinha/athena
  • lgagnon/athena
  • serodrig/athena
  • kkawade/athena
  • dpanchal/athena
  • chiodini/athena
  • joana/athena
  • amorenos/athena
  • mtanasin/athena
  • apalazzo/athena
  • jshahini/athena
  • gonzalri/athena
  • lfeligio/athena
  • vbuxbaum/athena
  • desengup/athena
  • kburka/athena
  • jaofferm/athena
  • gottino/athena
  • ehaines/athena
  • rmazini/athena
  • gavrilen/athena
  • dwkim/athena
  • mdidenko/athena
  • cdimitri/athena
  • sabidi/athena
  • qidong/athena
  • jingjing/athena
  • hazeng/athena
  • bkerridg/athena
  • ktackman/athena
  • sgaid/athena
  • yche/athena
  • yoyeh/athena
  • ktopolni/athena
  • dabattul/athena
  • attrtcal/athena
  • thmaurin/athena
  • bochen/athena
  • mischott/athena-22
  • asciandr/athena
  • lbazzano/athena
  • chjiang/athena
  • rushioda/athena-3
  • pclark/athena
  • krdona/athena
  • dtorresa/athena
  • meiqi/athena
  • kvidalgu/athena
  • nlad/athena
  • aackerma/athena
  • aaikot/athena
  • hmoyanog/athena
  • yingjun/athena
  • lesplend/athena
  • jcurran/athena
  • aivina/athena
  • maboelel/athena
  • mschefer/athena
  • xinfei/athena
  • kazheng/athena-physics-val-2023
  • xinhui/athena
  • rmakhman/athena
  • shhan/athena
  • zhiliang/athena
  • zoduan/athena
  • jlue/athena
  • liuk/athena
  • bdixit/athena
  • sfrances/athena
  • ragrabar/athena
  • asehrawa/athena
  • xingguo/athena
  • alsidley/athena
  • kyjones/topoetcone-removal
  • mhoppesc/athena
  • niabicht/athena
  • keener/athena
  • yunagai/athena
  • shahzad/athena
  • bschlag/athena
  • lcalic/athena-backup
  • greynold/athena
  • llewitt/athena
  • yinmiao/athena
  • bruckman/athena
  • kazheng/athena-workingpoint
  • drankin/athena
  • agentry/athena
  • adohnalo/athena
  • hvanders/athena
  • kbhide/athena
  • nkang/athena
  • ladamczy/test
  • tbeumker/athenatest
  • asmaga/athena
  • tbeumker/athena
  • berkeleylab/acts/athena
  • losanti/athena-23
  • weitao/athena
  • losanti/athena
  • wsong/athena
  • jiturriz/athena
  • menu-hackathon/athena
  • kyjones/trigger-example
  • dmankad/athena-idle
  • seggebre/athena-fluencemap-modification
  • dawerner/athena
  • vmaksimo/athena
  • toobauma/athena
  • fisopkov/athena
  • gtarna/athena
  • edreyer/athena
  • lprimomo/athena
  • SecVtx-Lancaster/Athena
  • smanzoni/athena
  • maparo/athena
  • adimri/athena
  • shmukher/athena
  • jcrosby/athena
  • aackerma/atlas-athena
  • pgraveli/athena
  • atlas-sa-uct/athena
  • wstanek/athena
  • lrambell/athena
  • tovsiann/athena
  • skita/athena
  • rsnyder/athena
  • zgao/athena
  • eullmank/athena
  • ppotepa/athena
  • lroos/athena
  • achakrav/athena
  • mhemmett/athena
  • kgoto/athena
  • xmapekul/athena
  • thmaurin/athena-sim-flavour
  • evitale/athena
  • npond/athena
  • arej/athena
  • rashbypi/athena
  • ivyas/athena
  • epasqual/athena
  • aleksand/athena
  • lkretsch/athena
  • mbiyabi/athena
  • jebohm/athena
  • hluk/athena
  • aralves/athena
  • cvittori/athena
  • dbiswas/athena
  • dkoeck/anniathenafork
  • mihe/athena
  • mkareem/athena
  • rgupta/athena
  • tslee/athena
  • cgarvey/athena
  • croland/athena
  • kesedlac/athena
  • ctosciri/athena-old
  • mhaacke/athena
  • pkumari/athena
  • ctosciri/athena
  • agerwin/athena
  • feickert/athena
  • asoflau/athena
  • bscheuer/athena
  • bdixit/masking-strip-modules
  • ricunnin/athena
  • gfrattar/athena
  • gwilliam/athena
  • gaofeng/athena
  • jfeng2/athena
  • gtolkach/athena
  • kosuzuki/athena
  • ksudo/athena
  • svanstro/athena
  • rhiguchi/athena
  • rmizuhik/athena
  • etoyoda/athena
  • vaustrup/athena
  • kkanke/athena
  • hart/athena
  • tnakagaw/athena
  • whopkins/athena
  • amakita/athena
  • maoki/athena
  • miyamada/athena
  • tpaschoa/athena
  • evalient/athena
  • dduda/athena
  • rishikaw/athena
  • anayaz/athena
  • ferusso/athena
  • smweber/athena
  • zyan/athena-muon-calib-stream
  • shudong/athena
  • aagaard/athena
  • smweber/athena-run-3
  • zyan/athena-muon-calib
  • strom/athena
  • dellacqu/athena
  • evalient/athena-dnn-calculator
  • sbellman/athena
  • strom/athena-dms
  • glagafon/project-nimber-1
  • jsallen/athena
  • brosser/athena
  • macretar/athena
  • aowang/athena
  • skadir/athena-sadaf
  • ooncel/athena
  • leguo/athena
  • osotosan/athena
  • glagafon/handi-project
  • jhoya/athena
  • tygeorge/athena
  • wuxi/athena
  • glagafon/handi-project-1
  • syan/athena-syan
  • hasun/athena
  • axgallen/athena-qualification-task
  • will/athena
  • mnorfolk/athena
  • aborbely/athena
  • seinfant/athena
  • karakawa/athena
  • schernau/athena
  • dmankad/athena-gen
  • taogawa/athena
  • ktariq/athena
  • mmaroun/ravina-fork
  • axgallen/athena
  • tmlinare/athena
  • vlysenko/athena
  • agarabag/athena
  • romar/athena
  • mahorstm/athena
  • zuzak/athena
  • dhagan/athena
  • tizhang/athena
  • atishelm/athena
  • ibamwidh/athena
  • ipolishc/athena
  • jolamber/athena
  • ykhoulak/myathena
  • frfische/athena
  • huayu/athena
  • jlue/athena-latest
  • yil/athena
  • xilin/athena
  • nkua-atlas/athena
  • chuanye/athena
  • tayoshid/athena
  • dntounis/athena
  • kifarman/athena
  • movincen/athena
  • nischmit/athena
  • lderamo/athena
  • dongyi/athena
  • steinber/athena-main
  • malvesca/athena
  • tdingley/athena
  • dtruncal/athena
  • mnowak/athena
  • kazheng/athena-acts
  • hasegawa/athena
  • glagafon/dq-optimize
  • ekajomov/athena-fork-fix
  • ladamczy/athena
  • mhufnage/athena
  • openc/athena
  • lcalic/athena
  • anfortma/athena
  • lsultana/obsolete_athena
  • lsultana/athena
  • kfung/athena
  • rqian/athena
  • yonoda/athena
  • alveltma/athena
  • pebaron/athena-leprem
  • alpleban/athena
  • mmaheshw/athena
  • jdavidso/athena
  • anstein/athena
  • edcritel/athena
  • bglik/athena
  • gbird/athena
  • midandre/athena
  • mfurukaw/athena
  • anhodges/athena
  • sokkerma/athena
  • fcurcio/athena
  • mvivasal/athena
  • asbrooks/athena
  • kyjones/athena
  • mveen/athena
  • jmcgowan/athena
  • mmlynars/athena-v-2
  • joroemer/athena
  • lboccard/athena
  • tburatov/athena
  • ivyoung/athena
  • dmankad/athena
  • tayoshid/athena-test
  • drasslof/athena
  • jodafons/athena
  • tmclachl/athena
  • ctaybi/athena
  • sdemiran/athena
  • sanchezj/athena-2022
  • sdahbi/athena
  • jiddon/athena
  • anburger/athena
  • sidoti/athena
  • apfleger/athena
  • fwinkel/athena
  • goblirsc/athena
  • mmoors/athena
  • jwkraus/athena
  • izahir/athena
  • sanchezj/athena
  • obut/athena
  • rvinasco/athena
  • klleras/athena
  • esimpson/athena
  • rhaberle/athena
  • jhowarth/athena
  • jecouthu/athena
  • dta/athena_old
  • janders/athena
  • dtrischu/athena
  • jchapman/athena
  • mungo/athena
  • sfuenzal/athena
  • avallier/athena
  • awharton/Athena
  • fmontere/athena
  • misantan/athena
  • fhenry/athena
  • gdigrego/athena
  • zhaotong/athena
  • zalegria/athena
  • amelo/athena
  • acordeir/athena-ed
  • shaoguan/athena
  • peiyan/athena
  • nbruscin/athena
  • pdougan/athena
  • backes/athena
  • caiy/athena
  • mkholoda/athena
  • fkirfel/athena
  • tayoshid/athena-2024
  • esampson/athena-idart
  • kchu/athena
  • shpeng/athena-2
  • bcervato/athena
  • gfacini/athena
  • gmercado/athena
  • fwinkl2/athena
  • rhowen/athena
  • esampson/athena-idart-2
  • gmascare/athena
  • costanzo/athena
  • yvolkotr/athena
  • nharriso/athena
  • yuematsu/athena
  • esampson/athena-otp
  • djlewis/athena
  • pibutti/athena
  • bmoser/athena
  • esampson/athena-june-otp
  • wcastigl/athena
  • alpleban/athena-met
  • astefl/athena
  • yilin/athena
  • bdong/athena
  • ksahan/athena
  • thitchin/athena
  • zhanhang/athena
  • sosarkar/athena-again
  • msasada/athena
  • lbarrade/athena
  • zhangbo/athena
  • seth/athena
  • okolay/athena
  • agheata/athena
  • txu/athena
  • robouque/athena
  • mlyukova/athena
  • dbaronmo/athena
  • nsurijr/athena
  • esampson/june-2-otp
  • martyniu/athena
  • wema/athena
  • damperia/athena-acts
  • acamplan/athena
  • boudreau/athena
  • eballabe/athena
  • bngair/met-significance-r-22
  • vsasse/athena
  • bngair/me-tsig-athena
  • bhuth/athena
  • rhicks/athena
  • menadeem/athena
  • atymchys/athena
  • ksakura/athena
  • vkost/athena
  • juscerri/athena
  • domatter/athena
  • arelycg/athena
  • yanqiw/athena
  • linghua/athena
  • skadir/athena
  • biliu/athena
  • sgoswami/athena
  • mwessels/athena
  • ddicroce/athena
  • sosarkar/athena
  • beltran/athena
  • dreikher/athena
  • fladias/athena
  • hshaddix/athena
  • bdebjani/athena
  • emoon/athena
  • lwinkler/athena
  • cleong/athena
  • elham/athena
  • mhabedan/athena
  • sdiefenb/athena-onnx-tutorial
  • haren/athena
  • dwilson/athena
  • mads/athena
  • fivone/athena
  • nkrogh/athena
  • thart/athena
  • lsanfili/athena
  • dahumphr/athena
  • scane/athena
  • kenakamu/athena
  • lifoster/athena
  • echerepa/athena
  • baer/athena
  • dcamarer/athena
  • alancast/athena
  • glagafon/aaaathena
  • glagafon/athena
  • haotianl/athena
  • eskorda/athena
  • ukhurshi/athena
  • salopez/athena
  • lburke/athena
  • rshibata/athena
  • glagafon/glagafon-dq
  • rvavrick/athena
  • pizhang/athena
  • pachabri/athena
  • htsoi/athena
  • delitez/athena
  • therwig/athena
  • mwitkows/athena
  • lcorazzi/athena
  • achamber/athena
  • casadop/athena
  • mmantina/athena
  • ezaya/athena
  • jaburles/athena
  • hzhuang/athena
  • jkrupa/athena
  • rmole/athena
  • lmonaco/athena
  • mfornasi/athena
  • mamirono/athena
  • gserenis/athena
  • fdattola/athena
  • semami/athena
  • rpozzi/athena
  • belderto/athena
  • uepstein/athena
  • jinglis/athena
  • abesir/athena
  • ljerala/athena
  • htorre/athena
  • cmavungu/athena
  • lechols/athena
  • lopezzot/athena
  • jajohnso/athena
  • jlittle/athena
  • wguerin/athena
  • robouque/athena-20241115
  • tneep/athena
  • rmole/athena-personal-fork
  • lbrown/athena
  • fsiegert/athena
  • kfang/athena-fork-kyfang
  • wenjingw/athena
  • epompapa/athena
  • jackersc/athena
  • prmitra/athena
  • ashirazi/athena
  • toheintz/athena
  • kgrimm/athena-kgrimm
  • wasu/athena
  • amoreira/athena
  • nihartma/athena
  • aslobodk/athena
  • goetz/athena-acts
  • yazhou/athena
  • gfazzino/athena
  • kdipetri/athena
  • djuarezg/athena
  • muschmid/athena
  • falves/athena
  • alarnold/athena
  • mborodin/athena
  • mdacunha/athena
  • wlai/athena
  • novotnyp/athena
  • rohasan/athena
  • adsalvad/athena
  • asickles/athena
  • alecrhys/athena
  • christog/athena
  • lvicenik/athena
  • ibenaoum/athena
  • tflee/athena
  • zetao/athena
  • kkazakov/athena
  • frcastig/athena
  • mfarzali/athena
  • pusharma/athena
  • llarson/athena
  • ehampshi/athena
  • jusilva/athena
  • gpinheir/athena
  • tomoya/athena-low-pt-muon-rec
  • jecifuen/athena
  • exochell/my-athena
  • hshaddix/athena-hshaddix
  • vchabala/athena
  • mojeda/athena
  • jlai/athena
  • jlieberm/athena
  • chhultqu/athena
  • nsur/athena-lund
  • misavic/athena
  • camccrac/athena
  • nshtokha/athena
  • pmourafr/athena
  • yukari/athena
  • yuxuanz/local-athena
  • zhubacek/athena
  • akraus/athena
  • sizumiya/athena
  • mfilipig/athena
  • fdejean/athena
  • sawyer/athena
  • mnegrini/athena
  • zrokavec/athena
  • rkavak/athena
  • yanqiw/athena-acts-for-run-3-silicon-tracking
  • gipoddar/athena
  • ssuravar/athena
  • mtancock/athena-2
  • gsalvi/athena
  • beyeo/athena
  • sutuncay/athena
  • vpires/athena-vasco
  • ywng/athena
  • fballi/athena
1575 results
Show changes
Commits on Source (191)
Showing
with 32 additions and 3519 deletions
......@@ -271,6 +271,9 @@ PP="$PP"'|Added successfully Conversion service:TagInfoMgr'
# this line moved around
PP="$PP"'|Added successfully Conversion service:AthenaPoolCnvSvc'
# Py:PropertyProxy
PP="$PP"'|Py:PropertyProxy.*WARNING'
########################################### END #####################################################
# Always use default ignore list
......
......@@ -10,6 +10,8 @@
#include "CaloIdentifier/CaloCell_ID.h"
#include "CaloCondBlobObjs/CaloCondUtils.h"
#include "CaloCondBlobObjs/CaloCondBlobFlt.h"
#include "Identifier/HWIdentifier.h"
class CaloNoise {
///Conditions Data Object holding the calorimeter noise per cell and per gain
......@@ -45,6 +47,12 @@ class CaloNoise {
return getNoise(h,gain);
}
/// Safety net: Disallow access by HWIdentifier
float getNoise(const HWIdentifier /*hwid*/, const int /*gain*/) const = delete;
float getEffectiveSigma(const Identifier id, const int gain, const float energy) const {
IdentifierHash h=m_caloCellId->calo_cell_hash(id);
if (h<m_tileHashOffset) {
......
......@@ -37,7 +37,7 @@ def _CaloNoiseCondAlgMC(noiseAlgName,noisetype):
if jobproperties.CaloNoiseFlags.UseCaloLuminosity():
lumiFolder='/CALO/Ofl/Noise/PileUpNoiseLumi'
conddb.addFolder('CALO_OFL',lumiFolder,className="CondAttrListCollection")
mlog.info("offline mode: use luminosity from /CALO/Ofl/Noise/PileuUpNoiseLumi to scale pileup noise")
mlog.info("offline mode: use luminosity from /CALO/Ofl/Noise/PileUpNoiseLumi to scale pileup noise")
theCaloNoiseAlg.LumiFolder = lumiFolder
theCaloNoiseAlg.Luminosity=-1.
else:
......
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
*/
// $Id$
/**
* @file AthContainers/tools/AuxTypeVector.icc
* @author scott snyder <snyder@bnl.gov>
......@@ -421,7 +419,8 @@ bool AuxTypeVectorHolder<T, CONT>::insertMove (size_t pos, void* beg, void* end)
insertMove1 (m_vecPtr->begin() + pos*SCALE,
reinterpret_cast<element_type*> (beg),
reinterpret_cast<element_type*> (end),
typename std::is_pod<element_type>::type());
typename std::conjunction<std::is_standard_layout<element_type>,
std::is_trivial<element_type> >::type());
return m_vecPtr->data() == orig;
}
......
......@@ -41,7 +41,7 @@ topScriptSearchPath="."
if [ ! -z "${WorkDir_DIR}" ]
then
topScriptSearchPath="$topScriptSearchPath $WorkDir_DIR_DIR/python"
topScriptSearchPath="$topScriptSearchPath $WorkDir_DIR/python"
fi
if [ ! -z "${Athena_DIR}" ]
......
......@@ -98,19 +98,18 @@ def getDefaultDetectors(geoTag):
detectors = set()
detectors.add('Bpipe')
if DetDescrInfo(geoTag)['Pixel']['Layout'] == 'SLHC':
if DetDescrInfo(geoTag)['Common']['Run'] == 'RUN4':
detectors.add('ITkPixel')
detectors.add('ITkStrip')
else:
detectors.add('Pixel')
detectors.add('SCT')
detectors.add('TRT')
if DetDescrInfo(geoTag)['Pixel']['Layout'] != 'SLHC':
detectors.add('BCM')
# TODO: wait for special table in the geo DB
# if DetDescrInfo(geoTag)['Common']['Layout'] == 'SLHC':
# if DetDescrInfo(geoTag)['Common']['Run'] == 'RUN4':
# detectors.add('BCMPrime')
if DetDescrInfo(geoTag)['Pixel']['DBM']:
if DetDescrInfo(geoTag)['Common']['Run'] in ['RUN1', 'RUN2', 'RUN3'] and DetDescrInfo(geoTag)['Pixel']['DBM']:
detectors.add('DBM')
if DetDescrInfo(geoTag)['Common']['Run'] == 'RUN4':
......
File mode changed from 100755 to 100644
File mode changed from 100644 to 100755
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
# @file PyAthena.FilePeekerLib
# @purpose provide components to peek into pool files
......@@ -238,7 +238,7 @@ class FilePeeker(PyAthena.Alg):
# swallow and keep as a string
pass
else:
a_data = a.data(a_type)()
a_data = a.data[a_type]()
#msg.info("%s: %s %s", spec.name(), a_data, type(a_data) )
attr_data.append( (spec.name(), a_data) )
attrs.append(dict(attr_data))
......@@ -458,8 +458,8 @@ class FilePeeker(PyAthena.Alg):
import re
# Pool parameters are of the form:
# '[NAME=somevalue][VALUE=thevalue]'
pool_token = re.compile(r'[[]NAME=(?P<name>.*?)[]]'
r'[[]VALUE=(?P<value>.*?)[]]').match
pool_token = re.compile(r'[\[]NAME=(?P<name>.*?)[\]]'
r'[\[]VALUE=(?P<value>.*?)[\]]').match
params = []
for i in range(pool.GetEntries()):
if pool.GetEntry(i)>0:
......
// This file's extension implies that it's C, but it's really -*- C++ -*-.
/*
* Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
* Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration.
*/
/**
* @file CxxUtils/ConcurrentStrMap.h
......@@ -74,7 +74,8 @@ namespace CxxUtils {
*/
template <class VALUE, template <class> class UPDATER>
// FIXME: Check UPDATER too.
ATH_REQUIRES (std::is_pod_v<VALUE> &&
ATH_REQUIRES (std::is_standard_layout_v<VALUE> &&
std::is_trivial_v<VALUE> &&
(sizeof (VALUE) <= sizeof (uintptr_t)))
class ConcurrentStrMap
{
......
/*
* Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration.
* Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration.
*/
/**
* @file CxxUtils/ConcurrentStrMap.icc
......@@ -12,7 +12,11 @@
namespace CxxUtils {
#define T_CONCURRENTSTRMAP template <class VALUE, template <class> class UPDATER>
#define T_CONCURRENTSTRMAP template <class VALUE, template <class> class UPDATER> \
ATH_REQUIRES (std::is_standard_layout_v<VALUE> && \
std::is_trivial_v<VALUE> && \
(sizeof (VALUE) <= sizeof (uintptr_t)))
#define CONCURRENTSTRMAP ConcurrentStrMap<VALUE, UPDATER>
......
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
# Declare the package name:
atlas_subdir( RelationalCollection )
# External dependencies:
find_package( CORAL COMPONENTS CoralBase RelationalAccess )
# Component(s) in the package:
atlas_add_library( RelationalCollection
src/*.cpp
NO_PUBLIC_HEADERS
PRIVATE_INCLUDE_DIRS ${CORAL_INCLUDE_DIRS}
PRIVATE_LINK_LIBRARIES ${CORAL_LIBRARIES} CollectionBase POOLCore PersistentDataModel )
# Component list generation:
atlas_generate_componentslist( RelationalCollection )
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#include "DBLock.h"
#include "POOLCore/Exception.h"
#include "RelationalCollectionNames.h"
#include "RelationalCollectionBindVariables.h"
#include "RelationalAccess/TableDescription.h"
#include "RelationalAccess/IQuery.h"
#include "RelationalAccess/ICursor.h"
#include "RelationalAccess/ITable.h"
#include "RelationalAccess/ISchema.h"
#include "RelationalAccess/ITablePrivilegeManager.h"
#include "RelationalAccess/ITransaction.h"
#include "RelationalAccess/ITableDataEditor.h"
#include "CoralBase/MessageStream.h"
#include "CoralBase/AttributeSpecification.h"
#include "CoralBase/Attribute.h"
#include "CoralBase/AttributeList.h"
#include "CoralBase/TimeStamp.h"
#ifdef WIN32
# include <windows.h>
# define sleep(x) Sleep((x)*1000)
std::string userinfo() {
return "Windows";
}
#elif defined __APPLE__
std::string userinfo() {
return "Apple";
}
#else
// hopefully UNIX
# include <unistd.h>
# include <limits.h>
# include <pwd.h>
std::string userinfo() {
static char hostname[HOST_NAME_MAX+1];
if( gethostname( hostname, HOST_NAME_MAX ) ) {
*hostname = 0; //error
}
hostname[HOST_NAME_MAX] = 0;
struct passwd *pwdent = getpwuid(geteuid());
const char *username_p = (pwdent? pwdent->pw_name : 0);
std::string username;
if( username_p )
username = username_p;
return std::string(hostname) + "/" + username;
}
#endif
using namespace pool;
using namespace std;
using namespace pool::RelationalCollection;
DBLock::DBLock( coral::ISessionProxy& session, const std::string& collName )
: m_session( session ),
m_name( collName ),
m_locked( false ),
m_autorelease( true ),
m_lockIngoreAge( 4000 ),
m_maxWait( 300 )
{
const char* env = getenv("POOL_RCOLL_LOCKAGELIMIT");
if( env ) {
int age = atoi(env);
if( age < 60 && age != 0 ) {
// 0 means infinity
m_lockIngoreAge = 60;
} else {
m_lockIngoreAge = age;
}
}
env = getenv("POOL_RCOLL_LOCKTIMEOUT");
if( env ) {
int to = atoi(env);
if( to < 10 && to != 0 ) {
// 0 means infinity
m_maxWait = 10;
} else {
m_maxWait = to;
}
}
}
DBLock::~DBLock()
{
if( m_locked && m_autorelease ) {
unlock();
m_session.transaction().commit();
}
}
void
DBLock::setAutorelease( bool ar )
{
m_autorelease = ar;
}
void
DBLock::lock( bool XTrans )
{
using namespace pool::RelationalCollection;
coral::MessageStream log( "pool::RelationalCollection::DBLock" );
coral::ISchema& nominalSchema = m_session.nominalSchema();
if( !nominalSchema.existsTable( RelationalCollectionNames::nameOfCollectionLockTable() ) ) {
// create the table where the locking is done
coral::TableDescription description( RelationalCollectionNames::nameOfCollectionLockTable() );
description.setName( RelationalCollectionNames::nameOfCollectionLockTable() );
description.insertColumn(
RelationalCollectionNames::entryIDVarInCollectionLockTable(),
coral::AttributeSpecification::typeNameForType<std::string>(), 50, false );
description.insertColumn(
RelationalCollectionNames::collectionNameVarInCollectionLockTable(),
coral::AttributeSpecification::typeNameForType<std::string>(), 500, false );
description.insertColumn(
RelationalCollectionNames::clientInfoVarInCollectionLockTable(),
coral::AttributeSpecification::typeNameForType<std::string>(), 500, false );
description.insertColumn(
RelationalCollectionNames::lockTypeVarInCollectionLockTable(),
coral::AttributeSpecification::typeNameForType<std::string>(), 20, false );
description.insertColumn(
RelationalCollectionNames::timestampVarInCollectionLockTable(),
coral::AttributeSpecification::typeNameForType<coral::TimeStamp>(), 2, false );
description.setPrimaryKey( RelationalCollectionNames::entryIDVarInCollectionLockTable() );
log << coral::Debug << " Creating lock TABLE:" << RelationalCollectionNames::nameOfCollectionLockTable() << coral::MessageStream::endmsg;
nominalSchema.createTable( description ); //.privilegeManager().grantToPublic( coral::ITablePrivilegeManager::Select );
}
int total_wait = 0;
do {
coral::ITable& lockTable = m_session.nominalSchema().tableHandle(
RelationalCollectionNames::nameOfCollectionLockTable() );
coral::IQuery* query = lockTable.newQuery();
query->addToOutputList( RelationalCollectionNames::entryIDVarInCollectionLockTable() );
query->addToOutputList( RelationalCollectionNames::collectionNameVarInCollectionLockTable() );
query->addToOutputList( RelationalCollectionNames::lockTypeVarInCollectionLockTable() );
query->addToOutputList( RelationalCollectionNames::timestampVarInCollectionLockTable() );
query->addToOutputList( RelationalCollectionNames::clientInfoVarInCollectionLockTable() );
coral::AttributeList whereDataForLock;
whereDataForLock.extend<std::string>(
RelationalCollectionNames::entryIDVarInCollectionLockTable() );
whereDataForLock.begin()->data<std::string>() = "LOCK";
string whereClauseForLock = RelationalCollectionNames::entryIDVarInCollectionLockTable() + " = :" + RelationalCollectionNames::entryIDVarInCollectionLockTable();
query->setCondition( whereClauseForLock, whereDataForLock );
query->limitReturnedRows( 1, 0 );
query->setForUpdate();
log << coral::Debug << " Checking the LOCK table:" << RelationalCollectionNames::nameOfCollectionLockTable() << coral::MessageStream::endmsg;
coral::ICursor& cursor = query->execute();
if( !cursor.next() ) {
log << coral::Debug << " Creating lock ROW in " << RelationalCollectionNames::nameOfCollectionLockTable() << coral::MessageStream::endmsg;
// no entry - new table or row removed by hand. Add the row
coral::AttributeList rowBuffer;
rowBuffer.extend< std::string >( RelationalCollectionNames::entryIDVarInCollectionLockTable() );
rowBuffer.extend< std::string >( RelationalCollectionNames::collectionNameVarInCollectionLockTable() );
rowBuffer.extend< std::string >( RelationalCollectionNames::clientInfoVarInCollectionLockTable() );
rowBuffer.extend< std::string >( RelationalCollectionNames::lockTypeVarInCollectionLockTable() );
rowBuffer.extend< coral::TimeStamp >( RelationalCollectionNames::timestampVarInCollectionLockTable() );
rowBuffer[0].data< std::string >() = "LOCK";
rowBuffer[1].data< std::string >() = m_name;
rowBuffer[2].data< std::string >() = userinfo();
rowBuffer[3].data< std::string >() = XTrans? "PERM" : "TEMP";
rowBuffer[4].data< coral::TimeStamp >() = coral::TimeStamp::now();
lockTable.dataEditor().insertRow( rowBuffer );
} else {
string lockType = cursor.currentRow()[RelationalCollectionNames::lockTypeVarInCollectionLockTable()].data< std::string >();
long long lockTime = cursor.currentRow()[RelationalCollectionNames::timestampVarInCollectionLockTable()].data< coral::TimeStamp >().total_nanoseconds() / 1000000000;
long long nowTime = coral::TimeStamp::now().total_nanoseconds() / 1000000000;
long long lock_age = nowTime - lockTime;
log << coral::Debug << " Current lock type is " << lockType << coral::MessageStream::endmsg;
if( lockType == "PERM" ) {
string lock_creator = cursor.currentRow()[RelationalCollectionNames::clientInfoVarInCollectionLockTable()].data< std::string >();
string locked_collection = cursor.currentRow()[RelationalCollectionNames::collectionNameVarInCollectionLockTable()].data< std::string >();
log << coral::Warning << " Permanent collection database lock detected (" << lock_age << " sec old) made by " << lock_creator << " on collection " << locked_collection << coral::MessageStream::endmsg;
if( m_lockIngoreAge==0 || lock_age < m_lockIngoreAge ) {
delete query; query = 0;
// release locks and wait some
m_session.transaction().commit();
if( total_wait >= m_maxWait ) {
log << coral::Warning << " Wait time exceeded: maximum specified wait time: " << m_maxWait << " sec - giving up" << coral::MessageStream::endmsg;
throw pool::Exception("Lock wait time exceeded",
"RelationalCollection::open::DBLock::lock",
"RelationalCollection" );
}
log << coral::Warning << " Sleeping for 10s" << coral::MessageStream::endmsg;
sleep(10);
total_wait += 10;
bool forUpdate(false);
m_session.transaction().start( forUpdate );
continue;
} else {
log << coral::Warning << " Ignoring database lock: greater than " << m_lockIngoreAge << coral::MessageStream::endmsg;
}
}
log << coral::Debug << " Setting database lock to " << ( XTrans? "'PERM'" : "'TEMP'" ) << coral::MessageStream::endmsg;
// update the row in the LOCK table to set databse lock and store lock type
string setClause =
RelationalCollectionNames::collectionNameVarInCollectionLockTable()
+ " = '" + m_name + "'"
+ ", " + RelationalCollectionNames::clientInfoVarInCollectionLockTable()
+ " = '" + userinfo() + "'"
+ ", " + RelationalCollectionNames::timestampVarInCollectionLockTable()
+ " = :newtime "
+ ", " + RelationalCollectionNames::lockTypeVarInCollectionLockTable()
+ " = " + ( XTrans? "'PERM'" : "'TEMP'" );
whereDataForLock.extend< coral::TimeStamp >( "newtime" );
whereDataForLock[1].data< coral::TimeStamp >() = coral::TimeStamp::now();
lockTable.dataEditor().updateRows( setClause, whereClauseForLock, whereDataForLock );
}
delete query;
m_locked = true;
return;
}while( true );
}
void
DBLock::unlock()
{
using namespace pool::RelationalCollection;
coral::ISchema& nominalSchema = m_session.nominalSchema();
coral::ITable& lockTable = nominalSchema.tableHandle(
RelationalCollectionNames::nameOfCollectionLockTable() );
string setClause =
RelationalCollectionNames::lockTypeVarInCollectionLockTable() + " = 'NONE'";
coral::AttributeList whereDataForLock;
whereDataForLock.extend<std::string>(
RelationalCollectionNames::entryIDVarInCollectionLockTable() );
whereDataForLock.begin()->data<std::string>() = "LOCK";
string whereClauseForLock = RelationalCollectionNames::entryIDVarInCollectionLockTable() + " = :" + RelationalCollectionNames::entryIDVarInCollectionLockTable();
lockTable.dataEditor().updateRows( setClause, whereClauseForLock, whereDataForLock );
m_locked = false;
}
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef RELATIONALCOLLECTION_DBLOCK_H
#define RELATIONALCOLLECTION_DBLOCK_H
#include "RelationalAccess/ISessionProxy.h"
namespace pool {
namespace RelationalCollection {
class DBLock
{
public:
DBLock( coral::ISessionProxy& session, const std::string& collName );
~DBLock();
/// set a global lock to serialize collection operations (creation etc)
/// if XTrans is flase, the lock will be gone when transaction is committed
/// if XTrans is true, the lock will be permanent
void lock( bool Xtrans );
/// remove global lock
void unlock();
/// set lock release behavior in the destructor
void setAutorelease( bool ar );
private:
/// Reference to current database access session.
coral::ISessionProxy& m_session;
std::string m_name;
/// true if this object holds a database lock
bool m_locked;
/// if true (default) try to remove the lock in the destructor
bool m_autorelease;
/// ignore database lock if older than this limit (in sec)
long long m_lockIngoreAge;
/// give up waiting for database access after this time (in sec)
int m_maxWait;
};
}
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#include "GUIDQuery.h"
#include "RelationalCollectionNames.h"
#include "PersistentDataModel/Token.h"
#include "RelationalAccess/IQuery.h"
#include "RelationalAccess/ICursor.h"
#include "RelationalAccess/ISessionProxy.h"
#include "RelationalAccess/ISessionProperties.h"
#include "CoralBase/Attribute.h"
#include "CoralBase/AttributeList.h"
#include "CoralBase/MessageStream.h"
#include "POOLCore/Exception.h"
#include "CollectionBase/ICollectionDescription.h"
#include <iostream>
using namespace std;
namespace pool {
namespace RelationalCollection {
// convert empty Tokens into zeroes
string guidFromToken( const Token& token ) {
return token.dbID().toString();
}
void GUIDQuery::readGUIDs()
{
m_guids.clear();
coral::MessageStream log( "pool::RelationalCollection::readGUIDs()" );
if( m_session.properties().flavorName() != "Oracle" || m_selectedTokenColumnNames.size() <= 1 ) {
// simple version for a single token, or non-oracle database
for( std::set<std::string>::const_iterator
tokenNameI = m_selectedTokenColumnNames.begin(),
end = m_selectedTokenColumnNames.end();
tokenNameI != end; ++tokenNameI ) {
log << coral::Debug
<< "Querying GUIDs for token " << *tokenNameI << coral::MessageStream::endmsg;
readGUIDs( *tokenNameI );
}
return;
}
// Oracle version - single query for all tokens, using CASE syntax
prepareQueryCondition();
prepareQuery();
// Create a subquery that produces a sequence (1,2,.., <number of tokens>)
// used in the main query to iterate over the tokens in a single row
string tokenSubQueryName = "token_seq";
string tokenNumName = "token_num";
coral::IQueryDefinition& subquery = m_query->defineSubQuery(tokenSubQueryName);
subquery.addToTableList( RelationalCollectionNames::nameOfCollectionDescriptionsTable() );
coral::AttributeList bindings;
bindings.extend(tokenNumName, typeid(unsigned));
bindings[tokenNumName].data<unsigned>() = m_selectedTokenColumnNames.size();
log << coral::Debug << "Selecting " << bindings[tokenNumName].data<unsigned>() << " tokens" << coral::MessageStream::endmsg;
subquery.setCondition("rownum<= :"+tokenNumName, bindings);
subquery.addToOutputList("rownum", tokenNumName);
m_query->addToTableList( tokenSubQueryName );
// create the case statements for the main query - one switch per token
// it will extract the token link reference and token name
std::ostringstream sqlTokID;
std::ostringstream sqlTokName;
sqlTokID << "case";
sqlTokName << "case";
int tokenN = 1;
for( std::set<std::string>::const_iterator
tokenNameI = m_selectedTokenColumnNames.begin(),
end = m_selectedTokenColumnNames.end();
tokenNameI != end; ++tokenNameI )
{
string oid1ColumnName = m_tableTokenColumnPrefixForCollectionTokenColumnName.find( *tokenNameI )->second + RelationalCollectionNames::oid_1_variableInCollectionDataTable();
sqlTokID << " when " << tokenSubQueryName << "." << tokenNumName << "=" <<tokenN
<< " then " << oid1ColumnName;
sqlTokName << " when " << tokenSubQueryName << "." << tokenNumName << "=" <<tokenN
<< " then " << "'" << *tokenNameI << "'";
tokenN++;
}
sqlTokID << " end ";
sqlTokName << " end ";
m_query->addToOutputList( sqlTokID.str(), "TokenLink" );
m_outputDataBuffer->extend( "TokenLink", typeid(unsigned) );
m_query->addToOutputList( sqlTokName.str(), "TokenName" );
m_outputDataBuffer->extend( "TokenName", typeid(string) );
// Execute query and retrieve cursor for navigation over result.
m_query->defineOutput( *m_outputDataBuffer );
m_query->setDistinct();
coral::ICursor& cursor = m_query->execute();
// map token link IDs into GUIDs using the link tables retrieved when opening the collection
Token token;
while( cursor.next() ) {
unsigned linkId = cursor.currentRow()[0].data< unsigned >();
const string& tokenName = cursor.currentRow()[1].data< string >();
const string& fragmentName = m_description.collectionFragmentName( tokenName );
std::map< unsigned, std::string >* tokenKeyForLinkId = m_mapOfTokenKeyForLinkIdMaps.find( fragmentName )->second;
token.fromString( tokenKeyForLinkId->find( linkId )->second );
m_guids.insert( make_pair(guidFromToken(token), tokenName) );
//cout << token.dbID() << " " << tokenName << endl;
}
}
void GUIDQuery::readGUIDs( const std::string& tokenName )
{
prepareQueryCondition();
prepareQuery();
// Form the OID_1 column name of the Token.
std::string oid1ColumnName = m_tableTokenColumnPrefixForCollectionTokenColumnName.find( tokenName ) ->second
+ RelationalCollectionNames::oid_1_variableInCollectionDataTable();
m_query->addToOutputList( oid1ColumnName );
m_outputDataBuffer->extend( oid1ColumnName, typeid(unsigned) );
// Execute query and retrieve cursor for navigation over result.
m_query->defineOutput( *m_outputDataBuffer );
m_query->setDistinct();
coral::ICursor& cursor = m_query->execute();
// map token link IDs into GUIDs using the link tables retrieved when opening the collection
string fragmentName = m_description.collectionFragmentName( tokenName );
std::map< unsigned, std::string >* tokenKeyForLinkId = m_mapOfTokenKeyForLinkIdMaps.find( fragmentName )->second;
Token token;
while( cursor.next() ) {
unsigned linkId = cursor.currentRow()[0].data< unsigned >();
token.fromString( tokenKeyForLinkId->find( linkId )->second );
m_guids.insert( make_pair(guidFromToken(token),tokenName) );
}
}
void GUIDQuery::addToAttributeOutputList( const std::string& columnName )
{
std::string errorMsg( "Attribute `" + columnName + "' is not a Token" );
throw pool::Exception( errorMsg,
"RelationalCollectionGUIDQuery::addToOutputList",
"RelationalCollection" );
}
const GUIDQuery::CountedGroupedGUIDs&
GUIDQuery::getGroupedGUIDs()
{
m_groupedGUIDs.clear();
coral::MessageStream log( "pool::RelationalCollection::getGroupedGUIDs()" );
prepareQueryCondition();
prepareQuery();
/* create query in the form:
SELECT COUNT(*), tokens GROUP BY tokens
it will extract the token link references */
m_query->addToOutputList( "count(*)", "count" );
m_outputDataBuffer->extend( "count", typeid(unsigned) );
string sep, groupby;
for( std::set<std::string>::const_iterator
tokenNameI = m_selectedTokenColumnNames.begin(),
end = m_selectedTokenColumnNames.end();
tokenNameI != end; ++tokenNameI )
{
string oid1ColumnName = m_tableTokenColumnPrefixForCollectionTokenColumnName.find( *tokenNameI )->second + RelationalCollectionNames::oid_1_variableInCollectionDataTable();
m_query->addToOutputList( oid1ColumnName, *tokenNameI );
m_outputDataBuffer->extend( *tokenNameI, typeid(unsigned) );
groupby += sep + oid1ColumnName;
sep = ",";
m_groupedGUIDs.tokenNames.push_back( *tokenNameI );
}
m_query->groupBy( groupby );
// Execute query and retrieve cursor for navigation over result.
m_query->defineOutput( *m_outputDataBuffer );
coral::ICursor& cursor = m_query->execute();
// map token link IDs into GUIDs using the link tables retrieved when opening the collection
Token token;
while( cursor.next() ) {
countedGUIDGroup_t row;
row.first = cursor.currentRow()[0].data< unsigned >();
for( std::set<std::string>::const_iterator
tokenNameI = m_selectedTokenColumnNames.begin(),
end = m_selectedTokenColumnNames.end();
tokenNameI != end; ++tokenNameI )
{
unsigned linkId = cursor.currentRow()[*tokenNameI].data< unsigned >();
const string& fragmentName = m_description.collectionFragmentName( *tokenNameI );
std::map< unsigned, std::string >* tokenKeyForLinkId = m_mapOfTokenKeyForLinkIdMaps.find( fragmentName )->second;
token.fromString( tokenKeyForLinkId->find( linkId )->second );
row.second.push_back( guidFromToken(token) );
}
// check for duplicated rows - result of an old linktable insert bug
// if found, just sum up the count
bool found(false);
for( vector< countedGUIDGroup_t >::iterator rowi = m_groupedGUIDs.groupedGUIDRows.begin(),
end = m_groupedGUIDs.groupedGUIDRows.end(); rowi != end; ++rowi ) {
bool match(true);
for( unsigned t = 0; t < rowi->second.size(); t++ ) {
if( row.second[t] != rowi->second[t] ) {
match = false; break;
}
}
if( match ) {
rowi->first += row.first;
found = true;
break;
}
}
if( !found )
m_groupedGUIDs.groupedGUIDRows.push_back( row );
}
return m_groupedGUIDs;
}
}
}
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef RELATIONALCOLLECTION_RELATIONALCOLLECTIONGUIDQUERY_H
#define RELATIONALCOLLECTION_RELATIONALCOLLECTIONGUIDQUERY_H
// Disable warning C4250 on Windows (inheritance via dominance)
#ifdef WIN32
#pragma warning ( disable : 4250 )
#endif
/*
* @author Marcin.Nowak@cern.ch
*/
#include "RelationalCollectionQuery.h"
#include "CollectionBase/ICollectionRelationalExtensions.h"
#include <set>
namespace pool {
namespace RelationalCollection {
class GUIDQuery : public RelationalCollectionQuery,
virtual public ICollectionGUIDQuery
{
public:
GUIDQuery( coral::ISessionProxy& session,
const pool::ICollectionDescription& description,
const std::map< std::string, std::string >& dataTableNameForCollectionFragmentName,
const std::map< std::string, std::string >& linksTableNameForCollectionFragmentName,
const std::map< std::string, std::string >& tableTokenColumnPrefixForCollectionTokenColumnName,
const std::map< std::string, std::string >& tableAttributeColumnNameForCollectionAttributeColumnName,
const coral::AttributeList& tableAttributeList,
const std::map< std::string, std::map< std::string, unsigned >* >& mapOfLinkIdForTokenKeyMaps,
const std::map< std::string, std::map< unsigned, std::string >* >& mapOfTokenKeyForLinkIdMaps )
: RelationalCollectionQuery(
session, description,
dataTableNameForCollectionFragmentName,
linksTableNameForCollectionFragmentName,
tableTokenColumnPrefixForCollectionTokenColumnName,
tableAttributeColumnNameForCollectionAttributeColumnName,
tableAttributeList,
mapOfLinkIdForTokenKeyMaps,
mapOfTokenKeyForLinkIdMaps,
false /* do not add primary key */ )
{ }
/// Query all GUIDs that were requested using AddToOutputList()
void readGUIDs();
/// Query GUIDs for a specific Token. Results are accumulated in the GUID Set
void readGUIDs( const std::string& tokenName );
/// Provide access to the GUID set.
virtual const GUIDSet& getGUIDs() { return m_guids; }
virtual const CountedGroupedGUIDs& getGroupedGUIDs();
protected:
GUIDSet m_guids;
CountedGroupedGUIDs m_groupedGUIDs;
// hide methods not supposed to be called
protected:
/// this method does not make sense in a GUID query
void addToAttributeOutputList( const std::string& columnName );
/// not useable since there is no special Cursor (yet?) for this type of query
ICollectionCursor& execute() { return RelationalCollectionQuery::execute(); }
};
}
}
#endif
/*
Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
*/
#ifndef RELATIONALCOLLECTION_RELATIONALCOLLECTION_H
#define RELATIONALCOLLECTION_RELATIONALCOLLECTION_H
#include "CollectionBase/ICollection.h"
#include "CollectionBase/CollectionRowBuffer.h"
#include "CollectionBase/CollectionDescription.h"
#include "CollectionBase/ICollectionRelationalExtensions.h"
#include "RelationalCollectionFragmentData.h"
#include "Gaudi/PluginService.h"
#include <map>
namespace coral {
class ISessionProxy;
class ISchema;
class AttributeList;
}
namespace pool {
class ISession;
namespace RelationalCollection {
class RelationalCollectionSchemaEditor;
class RelationalCollectionDataEditor;
class RelationalCollectionMetadata;
/**
* @class RelationalCollection RelationalCollection.h src/RelationalCollection.h
*
* Implementation of the ICollection interface to a collection of event references
* and their associated metadata. This class may also be used as an interface to a
* "collection fragment" which, by definition, contains a subset of the event level
* metadata, does not contain the event reference and which can reference an existing
* collection or collection fragment and/or be referenced by a chain of collection
* fragments to form a collection or collection fragment with extended schema.
*/
class RelationalCollection : virtual public ICollection, public ICollectionRelationalExtensions
{
public:
typedef Gaudi::PluginService::Factory<ICollection*( const ICollectionDescription*, ICollection::OpenMode, ISession*)> Factory;
/**
* Constructor.
*
* @param description Specication of collection properties.
* @param mode Open mode of collection (CREATE, CREATE_MISSING_FRAGMENTS, CREATE_AND_OVERWRITE, READ or UPDATE).
* @param session Reference to POOL database session (place holder for implicit collections).
*/
RelationalCollection( const pool::ICollectionDescription* description,
pool::ICollection::OpenMode mode,
pool::ISession* session );
/// Default destructor.
~RelationalCollection();
RelationalCollection (const RelationalCollection&) = delete;
RelationalCollection& operator= (const RelationalCollection&) = delete;
/// Returns the open mode of the collection for the present transaction.
virtual ICollection::OpenMode openMode() const;
/// Opens the collection and initializes it if necessary.
virtual void open();
/// Checks if the collection is open.
virtual bool isOpen() const;
/// Commits the latest changes made to the collection.
virtual void commit( bool restartTransaction = true );
/// Aborts the latest changes made to the collection.
virtual void rollback();
/// Closes the collection and terminates any database connections.
virtual void close();
/**
* Checks for the existence of one or more fragments of the collection.
*
* @param fragmentName Name of collection fragment.
* @param setForUpdate Flag indicating whether to lock the collection for update if it exists.
* @param checkChildFragments Flag to check for existence of all child fragments of given fragment.
*/
virtual bool exists( const std::string& fragmentName,
bool setForUpdate = false,
bool checkChildFragments = false ) const;
/**
* Drops one or more fragments of the collection and returns false if a fragment to be dropped cannot be found.
*
* @param fragmentName Name of collection fragment to drop.
* @param dropChildFragments Flag indicating whether to drop all child fragments of given fragment.
* @param ignoreExternalDependencies Flag indicating whether to check for dependencies on fragment by external fragments.
*/
virtual bool drop( const std::string& fragmentName,
bool dropChildFragments = false,
bool ignoreExternalDependencies = false );
/// Actuall implementation of drop method, with additional parameter for commit at the end
bool drop_impl( const std::string& fragmentName,
bool dropChildFragments = false,
bool ignoreExternalDependencies = false,
bool commit = true );
/**
* Renames a fragment of the collection.
*
* @param oldName Old name of collection fragment.
* @param newName New name of collection fragment.
*/
virtual bool rename( const std::string& oldName,
const std::string& newName );
/*
* Grants an access privilege to a user for one or more collection fragments.
*
* @param userName Name of user to which to grant the privilege.
* @param privilege Type of privilege to grant.
* @param fragmentName Name of collection fragment to which to grant access.
* @param grantForChildFragments Flag indicating whether to grant same access for all child fragments of specified collection fragment.
*/
virtual bool grantToUser( const std::string& userName,
pool::ICollection::Privilege privilege,
const std::string& fragmentName = "",
bool grantForChildFragments = false );
/*
* Revokes an access privilege from a user for one or more collection fragments.
*
* @param userName Name of user from which to revoke the privilege.
* @param privilege Type of privilege to revoke.
* @param fragmentName Name of collection fragment from which to revoke access.
* @param revokeForChildFragments Flag indicating whether to revoke same access for all child fragments of specified collection fragment.
*/
virtual bool revokeFromUser( const std::string& userName,
pool::ICollection::Privilege privilege,
const std::string& fragmentName = "",
bool revokeForChildFragments = false );
/*
* Grants SELECT access to the public for one or more collection fragments.
*
* @param fragmentName Name of collection fragment for which to grant access.
* @param grantForChildFragments Flag indicating whether to grant same access for all child fragments of specified collection fragment.
*/
virtual bool grantToPublic( const std::string& fragmentName = "",
bool grantForChildFragments = false );
/*
* Revokes SELECT access from the public for one or more collection fragments.
*
* @param fragmentName Name of collection fragment for which to revoke access.
* @param revokeForChildFragments Flag indicating whether to revoke same access for all child fragments of specified collection fragment.
*/
virtual bool revokeFromPublic( const std::string& fragmentName = "",
bool revokeForChildFragments = false );
/// Returns an object used to describe the collection properties.
virtual const ICollectionDescription& description() const;
/// Returns an object used to modify the collection schema.
virtual ICollectionSchemaEditor& schemaEditor();
/// Returns an object used to add, update or delete rows of the collection.
virtual ICollectionDataEditor& dataEditor();
/// Returns an object used to query the collection.
virtual ICollectionQuery* newQuery() const;
/// Returns an object used to access collection metadata
virtual ICollectionMetadata& metadata();
/// Returns an object used to query the collection for GUIDs directly on the server
virtual ICollectionGUIDQuery* newGUIDQuery() const;
private:
/// Initializes the collection.
void initialize();
/// Creates the collection headers table.
void createHeadersTable();
/// Creates the collection descriptions table.
void createDescriptionsTable();
/// Creates the collection index and unique constraint descriptions table.
void createIndexDescriptionsTable();
/**
* Checks whether the schema of a collection fragment defined by the collection description
* object matches the schema of an existing collection fragment of the same name.
*
* @param fragmentName Name of the collection fragments.
*/
bool newSchemaEqualsExistingSchema( const std::string& fragmentName );
/**
* Creates the data and links tables for a fragment of a collection being created.
*
* @param fragmentName Name of collection fragment for which to create tables.
*/
void createDataAndLinksTables( const std::string& fragmentName );
/**
* Initializes the collection headers table for a fragment of a collection being created.
*
* @param fragmentName Name of collection fragment for which to initialize collection headers table.
*/
void initializeHeadersTable( const std::string& fragmentName,
const std::string& dataTableName,
const std::string& linksTableName);
/**
* Initializes the collection descriptions table for a fragment of a collection being created.
*
* @param fragmentName Name of collection fragment for which to initialize collection descriptions table.
*/
void initializeDescriptionsTable( const std::string& fragmentName );
/// Retrieves descriptions of all collection fragments of an existing collection.
void retrieveCollectionFragmentDescriptions();
/**
* Retrieves descriptions of all columns of a collection fragment of an existing collection.
*
* @param fragmentName Name of collection fragment for which to retrieve column descriptions.
* @param collDesc Description object which is filled with the information.
*/
void retrieveColumnDescriptions( const std::string& fragmentName,
CollectionDescription *collDesc ) const;
void retrieveFragmentTableNames( const std::string& fragmentName );
/**
* Initializes all private maps and data row buffers used by the collection to add, update or query data.
*
* @param fragmentName Name of collection fragment for which to initialize maps and row buffers.
*/
void initializeMapsAndDataRowBuffers( const std::string& fragmentName );
/// Creates a row buffer that uses the schema of the Token links tables.
void createLinksTableRowBuffer();
/**
* Creates the maps of link ID's to Token keys for a given fragment of the collection.
*
* @param fragmentName Name of collection fragment for which to create maps.
*/
void createLinkIdToTokenKeyMaps( const std::string& fragmentName );
/**
* Creates an index one or more columns of a collection being created.
*
* @param indexName Name assigned to index.
* @param columnNames Names of columns for which index is created.
* @param isUnique Flag to indicates whether combination of indexed column values must be unique.
*/
void createIndex( const std::string& indexName,
const std::vector< std::string >& columnNames,
bool isUnique );
/**
* Sets a unique constraint on one or more columns of a collection being created.
*
* @param constraintName Name of constraint.
* @param columnNames Names of columns for which constraint is applied.
*/
void setUniqueConstraint( const std::string& constraintName,
const std::vector< std::string >& columnNames );
/**
* Retrieves descriptions of all indices in a collection fragment of the collection.
*
* @param fragmentName Name of collection fragment that contains the indices.
*/
void retrieveIndexDescriptions( const std::string& fragmentName );
/**
* Retrieves a description of a unique constraint in a collection fragment of the collection.
*
* @param fragmentName Name of collection fragment that contains the unique constraints.
*/
void retrieveUniqueConstraintDescriptions( const std::string& fragmentName );
/**
* Drops all foreign key constraints applied by a collection fragment except the constraint
* (if it exists) that is defined in the collection description. An input flag is provided to
* allow the defined constraint to also be dropped.
*
* @param fragmentName Name of collection fragment for which to drop applied foreign key constraints.
* @param dropDefinedConstraint Flag indicating whether to drop applied constraint defined in collection description.
*/
void dropParentForeignKeyConstraints( const std::string& fragmentName,
bool dropDefinedConstraint = false );
/**
* Drops the foreign key constraint on the collection fragment by its child collection fragment if such
* a constraint exists.
*
* @param fragmentName Name of collection fragment for which to drop the foreign key constraint.
*/
void dropChildForeignKeyConstraint( const std::string& fragmentName );
/**
* Sets a foreign key constraint on the parent collection fragment of the collection fragment specified as input.
*
* @param fragmentName Name of collection fragment for which to set constraint.
*/
void setForeignKeyConstraint( const std::string& fragmentName );
private:
/// Specification of collection properties.
CollectionDescription m_description;
/// Open mode of collection for present transaction.
ICollection::OpenMode m_mode;
/// Reference to current database access session.
coral::ISessionProxy *m_session;
/// Name of top level collection fragment.
std::string m_name;
/// Schema editor for collection.
RelationalCollectionSchemaEditor *m_schemaEditor;
/// Data editor for collection.
RelationalCollectionDataEditor *m_dataEditor;
RelationalCollectionMetadata *m_metadata;
/// Where clause for finding collection fragment name in collection headers table.
std::string m_whereClauseForCollectionNameInHeadersTable;
/// Where clause for finding child collection fragment name in collection headers table.
std::string m_whereClauseForChildCollectionNameInHeadersTable;
/// Where clause for finding collection fragment name in collection descriptions table.
std::string m_whereClauseForCollectionNameInDescriptionsTable;
/// Where clause for finding collection fragment name in index and unique constraints descriptions table.
std::string m_whereClauseForCollectionNameInIndexDescriptionsTable;
// Where clause for finding index name in index and unique constraint descriptions table.
std::string m_whereClauseForIndexNameInIndexDescriptionsTable;
/// Bind data for collection headers table collection fragment name where clause.
coral::AttributeList* m_whereDataForCollectionNameInHeadersTable;
/// Bind data for collection headers table child collection fragment name where clause.
coral::AttributeList* m_whereDataForChildCollectionNameInHeadersTable;
/// Bind data for collection descriptions table collection fragment name where clause.
coral::AttributeList* m_whereDataForCollectionNameInDescriptionsTable;
/// Bind data for collection index descriptions table collection fragment name where clause.
coral::AttributeList* m_whereDataForCollectionNameInIndexDescriptionsTable;
/// Bind data for collection index descriptions table index name where clause.
coral::AttributeList* m_whereDataForIndexNameInIndexDescriptionsTable;
/// Map of data table names using names of corresponding collection fragment names as keys.
std::map< std::string, std::string > m_dataTableNameForCollectionFragmentName;
/// Map of links table names using names of corresponding collection fragment names as keys.
std::map< std::string, std::string > m_linksTableNameForCollectionFragmentName;
/// Map holding the number of records written for a collection fragment name
//std::map< std::string, unsigned > m_recordsWrittenForCollectionFragmentName;
/// Information related to fragments, map keyed by fragment name
FragmentDataMap m_fragmentDataMap;
/// Map of table column prefixes for Tokens using names of corresponding collection columns as keys.
std::map< std::string, std::string > m_tableTokenColumnPrefixForCollectionTokenColumnName;
/// Map of table column names for Attributes using names of corresponding collection columns as keys.
std::map< std::string, std::string > m_tableAttributeColumnNameForCollectionAttributeColumnName;
/// Map of table column names or prefixes using names of corresponding collection columns as keys.
std::map< std::string, std::string > m_tableColumnNameForCollectionColumnName;
/// Map of collection column names using positions of corresponding table columns as keys.
std::map< int, std::string > m_collectionColumnNameForTableColumnPosition;
/// List of all Attributes defined by collection but using table column names.
coral::AttributeList* m_tableAttributeList;
/// Collection row buffer containing all Tokens and Attributes defined by collection.
pool::CollectionRowBuffer m_collectionRowBuffer;
/// Map of data table row buffers using names of corresponding collection fragments as keys.
std::map< std::string, coral::AttributeList* > m_dataTableRowBufferForCollectionFragmentName;
/// Row buffer using schema of collection links tables.
coral::AttributeList* m_linksTableRowBuffer;
/// Map of maps of link table ID's that use corresponding Token prefixes as keys, using collection fragment names as keys.
std::map< std::string, std::map< std::string, unsigned >* > m_mapOfLinkIdForTokenKeyMaps;
/// Map of maps of Token prefixes that use corresponding link table ID's as keys, using collection fragment names as keys.
std::map< std::string, std::map< unsigned, std::string >* > m_mapOfTokenKeyForLinkIdMaps;
/// Map of where clauses for finding Token OID_1 values in data tables, using Token collection column names as keys.
std::map< std::string, std::string > m_mapOfWhereClausesForOID1InDataTable;
/// Map of where data for finding Token OID_1 values in data tables, using Token collection column names as keys.
std::map< std::string, coral::AttributeList* > m_mapOfWhereDataForOID1InDataTable;
/// Flag indicating whether collection has been initialized.
bool m_initialized;
/// output stream
// mutable coral::MessageStream m_poolOut;
};
}
}
#endif
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#include "RelationalCollectionBindVariables.h"
#include "RelationalCollectionNames.h"
#include <sstream>
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForCollectionNameInHeadersTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionHeadersTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionHeadersTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForChildCollectionNameInHeadersTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::childCollectionNameVariableInCollectionHeadersTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::childCollectionNameVariableInCollectionHeadersTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForCollectionNameInDescriptionsTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForColumnNameInDescriptionsTable()
{
return ( RelationalCollectionNames::collectionVariableNameVariableInCollectionDescriptionsTable() + " = :" + RelationalCollectionNames::collectionVariableNameVariableInCollectionDescriptionsTable() + " AND " + RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() + " = :" + RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForCollectionNameInIndexDescriptionsTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionIndexDescriptionsTable() + " =:" +pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionIndexDescriptionsTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForIndexNameInIndexDescriptionsTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::indexNameVariableInCollectionIndexDescriptionsTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::indexNameVariableInCollectionIndexDescriptionsTable() + " AND " + pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForUniqueConstraintNameInIndexDescriptionsTable()
{
return ( RelationalCollectionNames::uniqueConstraintNameVariableInCollectionIndexDescriptionsTable() + " = :" + RelationalCollectionNames::uniqueConstraintNameVariableInCollectionIndexDescriptionsTable() + " AND " + RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() + " = :" + RelationalCollectionNames::collectionNameVariableInCollectionDescriptionsTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForPrimaryKeyInDataTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::recordIdVariableInCollectionDataTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::recordIdVariableInCollectionDataTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::whereClauseForLinkIdInLinksTable()
{
return ( pool::RelationalCollection::RelationalCollectionNames::linkIdVariableInCollectionLinksTable() + " = :" + pool::RelationalCollection::RelationalCollectionNames::linkIdVariableInCollectionLinksTable() );
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::
whereClauseForMetadata()
{
return RelationalCollectionNames::collectionNameColumn() + " = :" + RelationalCollectionNames::collectionNameColumn();
}
std::string
pool::RelationalCollection::RelationalCollectionBindVariables::
whereClauseForMetadataKey()
{
return whereClauseForMetadata() + " AND " + RelationalCollectionNames::metadataKeyColumn() + " = :" + RelationalCollectionNames::metadataKeyColumn();
}
/*
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
*/
#ifndef RELATIONALCOLLECTION_RELATIONALCOLLECTIONBINDVARIABLES_H
#define RELATIONALCOLLECTION_RELATIONALCOLLECTIONBINDVARIABLES_H
#include <string>
namespace pool {
namespace RelationalCollection {
/// Utility class holding frequently used bind variables in the RelationalCollection package.
class RelationalCollectionBindVariables
{
public:
// Collection headers table.
// Returns a where clause for finding a collection fragment name in the collection headers table.
static std::string whereClauseForCollectionNameInHeadersTable();
// Returns a where clause for finding a child collection fragment name in the collection headers table.
static std::string whereClauseForChildCollectionNameInHeadersTable();
// Collection descriptions table.
/// Returns a where clause for finding a collection fragment name in the collection descriptions table.
static std::string whereClauseForCollectionNameInDescriptionsTable();
/// Returns a where clause for finding a column name in the collection descriptions table.
static std::string whereClauseForColumnNameInDescriptionsTable();
// Collection indices and unique constraints table.
/// Returns a where clause for finding a collection fragment name in the index and unique constraints descriptions table.
static std::string whereClauseForCollectionNameInIndexDescriptionsTable();
/// Returns a where clause for finding an index name in the index and unique constraint descriptions table.
static std::string whereClauseForIndexNameInIndexDescriptionsTable();
/// Returns a where clause for finding a unique constrant name in the index and unique constraint descriptions table.
static std::string whereClauseForUniqueConstraintNameInIndexDescriptionsTable();
// Collection data table.
/// Returns a where clause for finding a primary key in the data table of a collection.
static std::string whereClauseForPrimaryKeyInDataTable();
// Collection links table.
/// Returns a where clause for finding a link ID in the links table of a collection.
static std::string whereClauseForLinkIdInLinksTable();
// Metadata table
static std::string whereClauseForMetadata();
static std::string whereClauseForMetadataKey();
};
}
}
#endif