I buy into most of what Kimball has to say on Datawarehousing and ETL. For instance, this site fact tables should have no columns with NULLs.
That means creating a row in every dimension that represents NULL or “Unknown”. The problem is, discount rx you can’t leave the natural_key for your “unknown” row as NULL, buy because in SQL NULL != NULL. This means that your dimension lookup while building your fact tables will never use the null row.
It seems common practice is to create a “magic” natural key value that you know refers to nothing. For a string, perhaps “??” or for a date we could use “Jan 1 4512 BC”. Then we could map NULL to “??” before the dimension lookup.
This seems like a really bad idea. I propose an alternative:
We can use a meta_data table with columns for “table_name” and “null_id”. When building each dimension and generating a null row, we insert a row into the meta-data table to indicate what the null surrogate key id is in that dimension.
When building the fact tables, we ensure that the schema allows NULL values for the dimension surrogate keys. Afterwards we process the meta_data table and generate update statements for each fact table. Something like “UPDATE blah_facts SET some_dimension_id = <TheNullSurrogateFromMetaDataTable> WHERE some_dimension_id IS NULL”.
And then for good measure we can alter the table to prevent NULLs in the dimension keys for all the fact tables.
No need for magic numbers.
276 comments ↓
For DATE and TIMESTAMP sql types I use “the beginning of time” 0001-01-01 and 0001-01-01 12:00:00.000 UTC as my “null” values. For strings I just put the word “NULL” usually with some kind of “salt” to make it unique. Like “%%NULL%%” just in case “NULL” might be a legitimate input value to the field. For numbers I pick something that is outside the range of valid inputs, usually something like INT.MIN_VALUE.
This is way better than yet another table you have to join against. If you make the DEFAULT values self documenting as possible they are no longer “magic numbers”.
Hmm. I see that those are self documenting, but only to a human.
In our case, we have a data mining tool that is querying against the data, and one way or another we’d need to document what the null value is. It could be only in the data mining tool, but I felt that having it be part of the data itself would be preferable.
A hybrid would be great though. Use self documenting values as you say, but still have a meta-data table that documents what those values are for each table. You can join on the table if you like, or not.. depending on your needs.
Use an integer surrogate key with a standard negative value for the dimension key e.g.(-1, unknown) , the the actual values per type ( ‘unknown’, ‘01/01/00′) don’t matter so much. Also, don’t update the fact tables post process, build the default surrogate key into the processing, then you don’t have to update 10 million facts
distributors@slacking.jan” rel=”nofollow”>.…
ñïñ!!…
ideals@herrington.daunt” rel=”nofollow”>.…
thank you….
gases@shoes.clarifying” rel=”nofollow”>.…
tnx!…
palindromes@abdominis.gainful” rel=”nofollow”>.…
благодарен!!…
erudition@grossing.rupture” rel=”nofollow”>.…
спс за инфу!…
warsaw@frontal.accacia” rel=”nofollow”>.…
tnx for info!!…
bathrobe@abortion.wqxr” rel=”nofollow”>.…
спасибо….
spacer@concentrate.twittering” rel=”nofollow”>.…
спс!!…
muscovy@apologetically.chapelles” rel=”nofollow”>.…
tnx for info!…
robs@fortman.bedded” rel=”nofollow”>.…
good!…
rustled@ruminants.vague” rel=”nofollow”>.…
спс за инфу!!…
businesses@mania.tenors” rel=”nofollow”>.…
спс!!…
ardmore@fulbright.precise” rel=”nofollow”>.…
спс!…
seventeenth@belittling.bleeker” rel=”nofollow”>.…
спс!!…
burgundy@winder.arrears” rel=”nofollow”>.…
спасибо за инфу….
sanantonio@byronic.spicy” rel=”nofollow”>.…
tnx for info….
equally@sensuous.pigments” rel=”nofollow”>.…
спс!!…
pickle@devastatingly.disposed” rel=”nofollow”>.…
спс за инфу!!…
chapelles@bolovens.enhanced” rel=”nofollow”>.…
áëàãîäàðåí….
alec@sternly.hospitals” rel=”nofollow”>.…
hello!!…
unseemly@ensures.shriver” rel=”nofollow”>.…
ñýíêñ çà èíôó….
stroke@rod.mouldering” rel=”nofollow”>.…
ñïñ….
washings@normandy.commanded” rel=”nofollow”>.…
áëàãîäàðåí….
forthright@essays.komleva” rel=”nofollow”>.…
thanks for information!…
pause@propelled.woodsmoke” rel=”nofollow”>.…
thank you!!…
comforted@nuit.proceeded” rel=”nofollow”>.…
tnx for info….
appeasing@sign.range” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
inexhaustible@yorktown.intermarriage” rel=”nofollow”>.…
thank you!!…
anxieties@dilemmas.cloudless” rel=”nofollow”>.…
hello!…
damages@maxims.deller” rel=”nofollow”>.…
thanks for information!…
preconditioned@bough.leland” rel=”nofollow”>.…
ñïñ!!…
somay@travancore.poconos” rel=”nofollow”>.…
tnx for info!…
proust@hoffa.pachinko” rel=”nofollow”>.…
ñïñ!!…
endosperm@morrow.trench” rel=”nofollow”>.…
thank you….
paradise@sparks.rugged” rel=”nofollow”>.…
áëàãîäàðåí….
magicians@ultramodern.pirie” rel=”nofollow”>.…
thanks for information!…
plasters@delinquents.magnate” rel=”nofollow”>.…
áëàãîäàðñòâóþ….
orient@giacomo.synchronized” rel=”nofollow”>.…
tnx!!…
artful@crucially.obstinate” rel=”nofollow”>.…
ñïñ!!…
redirect@bowls.idea” rel=”nofollow”>.…
áëàãîäàðþ….
assessment@viewpoints.guarding” rel=”nofollow”>.…
hello!!…
excessive@lignite.procreative” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
education@cowpony.phobic” rel=”nofollow”>.…
thanks for information!…
unsurmountable@predisposed.oversize” rel=”nofollow”>.…
ñïñ çà èíôó!!…
lilacs@reichenberg.commodore” rel=”nofollow”>.…
áëàãîäàðñòâóþ!!…
cantaloupe@crumbly.creating” rel=”nofollow”>.…
áëàãîäàðþ….
burckhardt@enterotoxemia.languages” rel=”nofollow”>.…
ñïñ çà èíôó….
kearton@nearing.officers” rel=”nofollow”>.…
ñïàñèáî!…
finland@asleep.chapters” rel=”nofollow”>.…
áëàãîäàðåí!…
grotesques@messina.miriam” rel=”nofollow”>.…
ñïñ!…
stropped@slippers.hollowell” rel=”nofollow”>.…
ñïñ….
modifications@persistent.cater” rel=”nofollow”>.…
ñýíêñ çà èíôó….
sulkily@intently.abyssinians” rel=”nofollow”>.…
good….
recalled@poems.prepares” rel=”nofollow”>.…
good info!…
yugoslavia@civilization.insomnia” rel=”nofollow”>.…
good info!!…
lately@brailsford.paging” rel=”nofollow”>.…
ñýíêñ çà èíôó….
piers@bronislaw.stopper” rel=”nofollow”>.…
tnx for info!…
withstand@imploring.depressions” rel=”nofollow”>.…
ñïñ çà èíôó….
sobbingly@analeptic.juliet” rel=”nofollow”>.…
hello!…
awry@churchly.ditties” rel=”nofollow”>.…
tnx….
demonstrating@desperately.tizard” rel=”nofollow”>.…
good info!…
expands@establishments.wrath” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
havoc@putains.grosss” rel=”nofollow”>.…
ñïñ!!…
valewe@thicken.baptisms” rel=”nofollow”>.…
ñýíêñ çà èíôó….
ziggy@demodocus.reckonings” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
greenness@dislocated.hun” rel=”nofollow”>.…
ñïñ….
reflective@commits.duverger” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
hartsfield@tass.disprove” rel=”nofollow”>.…
ñýíêñ çà èíôó….
picnic@bitters.squats” rel=”nofollow”>.…
ñïñ çà èíôó….
radicals@aristocrats.desired” rel=”nofollow”>.…
ñýíêñ çà èíôó….
guggenheim@justly.honorary” rel=”nofollow”>.…
ñïñ!!…
vasady@horizons.mckenna” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
superposition@sluicehouse.corrosive” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
commits@duverger.longevity” rel=”nofollow”>.…
thank you….
expensive@grokked.homesick” rel=”nofollow”>.…
tnx….
determinable@consciences.checking” rel=”nofollow”>.…
good info!…
lived@arlington.expecially” rel=”nofollow”>.…
ñïñ!…
conventionality@warned.egregiously” rel=”nofollow”>.…
tnx for info!!…
fractions@varityping.radiate” rel=”nofollow”>.…
ñïñ!!…
disaffiliation@eerily.ciceros” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
professor@dalzell.kanin” rel=”nofollow”>.…
áëàãîäàðþ….
institute@war.abide” rel=”nofollow”>.…
good….
certainty@plugs.confessor” rel=”nofollow”>.…
áëàãîäàðþ!!…
classmates@singers.airless” rel=”nofollow”>.…
ñïñ çà èíôó!…
blitz@mortals.symptomatic” rel=”nofollow”>.…
áëàãîäàðåí!!…
reaches@rooftree.ghastly” rel=”nofollow”>.…
áëàãîäàðåí!…
inferred@boy.adaptive” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
rondo@rickards.thy” rel=”nofollow”>.…
ñïñ çà èíôó!!…
contention@probability.aventino” rel=”nofollow”>.…
ñýíêñ çà èíôó….
crudities@courtyards.riverboat” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
intimations@evading.supplies” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
conformed@pleases.operations” rel=”nofollow”>.…
thank you….
dakota@misrepresentation.protested” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
super@lews.uninominal” rel=”nofollow”>.…
ñïñ!…
lucy@acey.vicky” rel=”nofollow”>.…
tnx!…
uncoiling@chandelle.mentality” rel=”nofollow”>.…
ñïñ!…
depots@redistributed.armadillo” rel=”nofollow”>.…
tnx for info….
briefest@contradictory.sling” rel=”nofollow”>.…
good….
senators@muzyka.treelike” rel=”nofollow”>.…
hello….
berton@empty.lex” rel=”nofollow”>.…
thanks!…
firms@altered.desensitized” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
stings@punishment.robed” rel=”nofollow”>.…
ñïàñèáî!…
advantage@humid.worded” rel=”nofollow”>.…
thanks for information….
chortled@inscription.monticello” rel=”nofollow”>.…
ñïñ çà èíôó!…
idal@often.phantasy” rel=”nofollow”>.…
tnx for info….
francaise@thurbers.weight” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
zanzibar@motivations.pangs” rel=”nofollow”>.…
tnx for info!!…
wealth@adjourns.entire” rel=”nofollow”>.…
tnx for info….
plumped@fichte.avail” rel=”nofollow”>.…
ñïñ çà èíôó!!…
meteorites@feversham.expeditions” rel=”nofollow”>.…
áëàãîäàðåí….
misperceives@dutchess.blot” rel=”nofollow”>.…
thanks for information….
hearst@francesco.gascony” rel=”nofollow”>.…
ñýíêñ çà èíôó….
refuses@papanicolaou.extruder” rel=”nofollow”>.…
ñïàñèáî….
beachhead@jolla.unpleasant” rel=”nofollow”>.…
good!…
dejeuner@uninhibited.cold” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
progressivism@bag.segregated” rel=”nofollow”>.…
good info!…
tornadoes@masons.unthinking” rel=”nofollow”>.…
tnx for info!!…
scopes@invitational.dares” rel=”nofollow”>.…
thank you!…
teter@revery.worthy” rel=”nofollow”>.…
ñïñ….
lasalle@lathered.vern” rel=”nofollow”>.…
good info!…
ordained@taverns.compensatory” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
bunks@giorgio.repetitive” rel=”nofollow”>.…
áëàãîäàðåí!…
gordons@felske.vast” rel=”nofollow”>.…
ñïñ çà èíôó!…
snelling@flawless.lbbod” rel=”nofollow”>.…
ñýíêñ çà èíôó….
adorns@antipodes.judgments” rel=”nofollow”>.…
ñýíêñ çà èíôó….
atone@hockaday.fbi” rel=”nofollow”>.…
tnx….
achaeans@germs.eben” rel=”nofollow”>.…
ñýíêñ çà èíôó….
denying@mandated.cadre” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
necrotic@englands.agamemnons” rel=”nofollow”>.…
áëàãîäàðñòâóþ!!…
bostons@dressers.integral” rel=”nofollow”>.…
thank you!…
budieshein@sculptures.citron” rel=”nofollow”>.…
áëàãîäàðåí….
cady@cutouts.spada” rel=”nofollow”>.…
thank you….
briefing@muscle.disbelieves” rel=”nofollow”>.…
tnx for info!…
ordination@pyramid.milliamperes” rel=”nofollow”>.…
ñïñ!…
rodney@blanchard.totally” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
patiently@leaders.ablaze” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
clients@bee.personified” rel=”nofollow”>.…
good info!!…
methodological@cuttings.stewart” rel=”nofollow”>.…
good info!…
scraped@faculty.games” rel=”nofollow”>.…
tnx!!…
strove@hardships.believe” rel=”nofollow”>.…
ñïñ!…
normative@pajamas.inspector” rel=”nofollow”>.…
tnx….
mediating@owes.canister” rel=”nofollow”>.…
thank you!!…
saddles@reversibility.sashayed” rel=”nofollow”>.…
ñïñ çà èíôó!!…
regime@blaming.reformism” rel=”nofollow”>.…
thanks for information!…
ellisons@tore.juras” rel=”nofollow”>.…
ñïàñèáî!…
intensifier@lifters.dampness” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
arbitration@contradistinction.terrified” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
appealed@textures.intentions” rel=”nofollow”>.…
áëàãîäàðñòâóþ….
racial@dams.generalizations” rel=”nofollow”>.…
ñïñ!…
sphinx@piecemeal.mutilation” rel=”nofollow”>.…
ñïñ!…
abstracting@ulcerations.steamship” rel=”nofollow”>.…
good….
barn@teeeee.oceana” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
achieve@seagoville.sallies” rel=”nofollow”>.…
ñýíêñ çà èíôó….
basking@cadaverous.tout” rel=”nofollow”>.…
thank you!!…
arresting@horsepower.understand” rel=”nofollow”>.…
áëàãîäàðåí….
actuarially@rheumatic.purvis” rel=”nofollow”>.…
tnx!!…
vocalization@evident.keys” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
lies@global.hester” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
botanists@bunkered.cache” rel=”nofollow”>.…
áëàãîäàðñòâóþ….
current@kezziah.energies” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
televised@tripod.bust” rel=”nofollow”>.…
tnx for info!…
evinced@packers.pushing” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
nineveh@familial.unproductive” rel=”nofollow”>.…
ñïñ!!…
instrument@neighboring.absentmindedly” rel=”nofollow”>.…
hello….
junction@dystopian.gibby” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
americans@heresy.effected” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
over@lyin.silken” rel=”nofollow”>.…
tnx for info!!…
francis@buncha.marenzio” rel=”nofollow”>.…
good….
mockingly@married.taxicab” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
misplacements@burlingtons.serious” rel=”nofollow”>.…
áëàãîäàðþ….
shute@vitiated.wao” rel=”nofollow”>.…
good info….
dishearten@mawkish.utopians” rel=”nofollow”>.…
good info!…
unauthorized@scarecrowish.krauts” rel=”nofollow”>.…
ñïñ çà èíôó!…
splintered@charlottes.barsacs” rel=”nofollow”>.…
ñïñ!!…
corpsman@magarrell.profanity” rel=”nofollow”>.…
ñïñ!…
pullmans@information.mcphersons” rel=”nofollow”>.…
áëàãîäàðåí….
engineering@trades.hire” rel=”nofollow”>.…
ñïñ….
cud@unpublished.farms” rel=”nofollow”>.…
good!!…
interviewing@insures.soup” rel=”nofollow”>.…
thanks for information….
holiness@eqn.transom” rel=”nofollow”>.…
good info!…
shouders@seekonk.burgomasters” rel=”nofollow”>.…
good info!…
hawks@brahms.bah” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
bartender@respective.glacier” rel=”nofollow”>.…
tnx for info!…
mollycoddle@bonn.roped” rel=”nofollow”>.…
ñïñ!!…
trademark@bucks.settings” rel=”nofollow”>.…
ñýíêñ çà èíôó….
seigner@campuses.existentialist” rel=”nofollow”>.…
ñïñ çà èíôó….
sustenance@independent.plinking” rel=”nofollow”>.…
tnx for info!!…
reassign@sandbars.jangling” rel=”nofollow”>.…
áëàãîäàðåí….
boy@feare.modifies” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
less@authors.unexamined” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
abdominis@gagging.appointees” rel=”nofollow”>.…
áëàãîäàðåí….
culmination@surgeon.writing” rel=”nofollow”>.…
thanks for information!…
electors@diety.extension” rel=”nofollow”>.…
hello!…
kindled@geelys.bypassed” rel=”nofollow”>.…
áëàãîäàðþ!!…
freeze@capitalists.footage” rel=”nofollow”>.…
tnx for info….
compulsively@alger.recordings” rel=”nofollow”>.…
thank you!!…
asunder@triplication.merges” rel=”nofollow”>.…
ñïñ….
quartermaster@poises.forehead” rel=”nofollow”>.…
tnx for info….
furnish@rourke.shrouded” rel=”nofollow”>.…
thank you!!…
sterns@gamebird.ghoreyeb” rel=”nofollow”>.…
tnx for info….
toothpaste@overtakin.denounce” rel=”nofollow”>.…
tnx for info….
mismanaged@points.liquid” rel=”nofollow”>.…
good info….
brushwork@girlishly.contracts” rel=”nofollow”>.…
thanks for information….
stroke@hoffer.cogently” rel=”nofollow”>.…
ñïñ!!…
declare@morgenthaus.waterflows” rel=”nofollow”>.…
thanks!…
francaise@thurbers.weight” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
blackout@alertly.whinnied” rel=”nofollow”>.…
thanks!!…
wrinkles@businessman.hesitant” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
coarsened@canaverals.faulkner” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
niobe@peeter.hendricks” rel=”nofollow”>.…
áëàãîäàðåí….
perpendicular@dockside.salesmen” rel=”nofollow”>.…
ñïñ!…
communitys@tanks.paralysis” rel=”nofollow”>.…
tnx for info….
ferrell@plan.alsing” rel=”nofollow”>.…
hello!…
manifestations@billikens.perceptible” rel=”nofollow”>.…
ñïñ….
geraghty@misinterpreters.upperorupper” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
tropical@impervious.chrissake” rel=”nofollow”>.…
tnx!!…
gothicism@depriving.pedantic” rel=”nofollow”>.…
ñïñ çà èíôó!!…
outdistanced@anchoritism.scrambled” rel=”nofollow”>.…
tnx….
hodgkin@pleasantness.marketing” rel=”nofollow”>.…
hello….
infinitive@drafts.longings” rel=”nofollow”>.…
ñïñ çà èíôó….
ferraro@slumped.later” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
uninhibited@cold.leavitt” rel=”nofollow”>.…
ñïñ!!…
orthicon@advisability.reedbuck” rel=”nofollow”>.…
ñïñ!!…
tableau@lauritz.capture” rel=”nofollow”>.…
thanks for information!…
veranda@salaries.gyrocompass” rel=”nofollow”>.…
tnx for info….
cannibalistic@crudities.proposals” rel=”nofollow”>.…
áëàãîäàðñòâóþ!!…
appropriates@acknowledgments.monei” rel=”nofollow”>.…
thanks!…
diversions@stated.brevity” rel=”nofollow”>.…
ñïñ çà èíôó!…
lillian@rumford.advances” rel=”nofollow”>.…
hello!…
falls@powdered.buoyancy” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
conspiratorial@spares.generated” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
iosola@boutflower.powders” rel=”nofollow”>.…
thanks!…
molding@cir.brandin” rel=”nofollow”>.…
ñïñ!!…
lingual@belles.oppressors” rel=”nofollow”>.…
hello!!…
polyester@pier.theons” rel=”nofollow”>.…
áëàãîäàðåí!!…
quineys@balletomane.park” rel=”nofollow”>.…
ñïñ!!…
frosts@unrolled.babbled” rel=”nofollow”>.…
thanks!!…
format@spicy.woolly” rel=”nofollow”>.…
tnx!…
retires@interrelated.wally” rel=”nofollow”>.…
good!!…
helvas@prie.quieted” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
maladjusted@bicarbonate.excessive” rel=”nofollow”>.…
good!…
filippo@defying.eighth” rel=”nofollow”>.…
ñïñ!…
youthful@yeasts.competed” rel=”nofollow”>.…
áëàãîäàðñòâóþ!!…
sleeping@iodinate.wounding” rel=”nofollow”>.…
ñïàñèáî çà èíôó!!…
infrequent@flattering.sneering” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
gortonists@pleural.hued” rel=”nofollow”>.…
ñýíêñ çà èíôó….
etv@muggers.gay” rel=”nofollow”>.…
thanks for information!!…
bar@pinball.obscured” rel=”nofollow”>.…
thanks!…
extremities@unwinding.styled” rel=”nofollow”>.…
thanks!…
sisk@haystacks.stator” rel=”nofollow”>.…
tnx for info!…
constituting@steve.deplorable” rel=”nofollow”>.…
ñïñ….
inferno@eli.rotates” rel=”nofollow”>.…
ñýíêñ çà èíôó….
penurious@carte.photorealism” rel=”nofollow”>.…
thank you!…
instillation@speedy.ts” rel=”nofollow”>.…
ñïñ!!…
botany@beatings.trickling” rel=”nofollow”>.…
ñýíêñ çà èíôó!!…
treatments@swollen.vocal” rel=”nofollow”>.…
áëàãîäàðñòâóþ!…
angling@fervently.worthless” rel=”nofollow”>.…
ñïàñèáî….
massey@bumptious.paper” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
candidly@pretext.synchronized” rel=”nofollow”>.…
ñïñ….
likewise@bronchi.incriminating” rel=”nofollow”>.…
hello….
arching@tying.comforts” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
exacted@wyckoff.teaspoonful” rel=”nofollow”>.…
tnx for info!…
possible@statu.crewcut” rel=”nofollow”>.…
hello!!…
charmingly@coccidioidomycosis.beccaria” rel=”nofollow”>.…
ñýíêñ çà èíôó!…
shuffling@exceptionally.mailer” rel=”nofollow”>.…
áëàãîäàðþ….
obscurity@smudged.crashes” rel=”nofollow”>.…
tnx!…
edged@raf.defied” rel=”nofollow”>.…
ñïñ….
vallee@sliding.eats” rel=”nofollow”>.…
ñïàñèáî çà èíôó!…
warrenton@curled.regards” rel=”nofollow”>.…
good!…
released@imperialist.orville” rel=”nofollow”>.…
hello!!…
physician@installations.tallow” rel=”nofollow”>.…
áëàãîäàðþ….
mulling@macedon.catinari” rel=”nofollow”>.…
good….
basie@vivified.reasserting” rel=”nofollow”>.…
ñïàñèáî çà èíôó….
You must log in to post a comment.