chi

Sophia Schiebe: Das Kita-Sparpaket der Günther-Regierung haben unsere Kinder nicht verdient




chi

Ist die "Schilderwald"-Novelle der StVO nichtig?

In einer




chi

Incredible Secret Money Machine ebook




chi

Luke Everett Hutchinson

Our dear son Luke Everett was born on October 21, 2014 at 12:52 pm. He weighed 9 lbs and 8 oz and was 21.5 inches long. He has dark brown/black hair like Claire and Sims. His eyes are blue for now but I'm sure they will change. He is the sweetest little baby and we cannot imagine our lives without him now. He is so new but it's like he has always been with us.


The delivery was the hardest one I've had and he broke his collar bone but we are both on the mend now and feeling better every day.  But I would take the pain again and again to have Luke with us.


Luke means light in Greek and Everett means brave. Our prayer for Luke is that he will point people to the light of Christ and that the Lord will strengthen him to be brave in doing what the Lord has called him to do.


Thanks be to the Lord for His many, many blessings. 


Thanks to our wonderful parents who have helped us tremendously with our other children during the past 9 days. We are all back together again and I hope to get a picture of everyone soon. And also, "Luke" was a character on LOST. :) He was an "Other" in 5 episodes of season 3. The LOST name streak lives on.




chi

Why we have 7 children

The 2015 Daxko kick-off is complete and the size of my family was an unplanned recurring humorous theme this year. I expect many people left last Friday evening with a few unanswered questions. Questions only I can answer.

Seven.  That's how many kids I actually have.  Comparing us to the Duggars is an insult to Michelle!

Yes. I know "how it happens"

No.  I am not "Roman Catholic"

Yes. I do have cable.  It doesn't help.

No.  I have no idea how we will send them to college…but neither do you.

Yes. We know about and have used birth control.

Why do my wife and I have so many children?  The Lord has given them to us.  He has entrusted them to us.  It is our great joy to teach them about Him.  We believe the purpose of our lives is to glorify God and to enjoy Him forever.  No, bearing and raising children is not the only way to honor and glorify God, but it is a rewarding work.  It is edifying.  It is sanctifying.  It brings me joy.  There are so many things people could laugh at me about so I'm glad they choose this.

Consider this. Everything we do on this earth will pass away. Very few people in history "make an impact" or are remembered for very long.  Human souls are eternal.  We have been given 7 eternal souls to care for and to teach about the Lord.  It is not always easy.  It often reveals my sin, but  I do this work with the hope that they will one day stand eternally before the Lord with me in peace.

All the work I put into their lives has eternal value.  This is HUGE!  Most people miss this point.  All the poopy diapers, long nights, sickness and general frustrations of parenting are not offset only by the happy moments captured on instagram.  One great joy of parenting is the hope that the child you brought into this world will one day pass through death to an eternity with their creator in perfection and joy. Children are truly a blessing from the Lord!

Some may still think I am crazy.  I am ok with that.  Remember this.  I have a really good chance of not ending up in a nursing home!





chi

Un haut responsable du PCC appelle � la promotion d'une communaut� Chine-Vietnam d'avenir partag�

Le haut responsable chinois, Li Xi, a rencontr� Phan Dinh Trac, membre du Bureau politique, secr�taire du secr�tariat et pr�sident de la Commission des affaires int�rieures du Comit� central du Parti communiste vietnamien (PCV), mardi � Beijing. ...




chi

Le PM chinois met l'accent sur l'am�lioration de la production agricole et la pr�vention des catastrophes

Le Premier ministre chinois Li Qiang a mis l'accent sur l'am�lioration de la capacit� globale de production agricole, ainsi que sur la pr�vention et la r�duction des catastrophes, afin de poser des bases solides pour assurer la s�curit� alimentaire....




chi

La Chine accueille les entreprises � capitaux �trangers pour approfondir la coop�ration mutuellement b�n�fique

La Chine promeut une ouverture de haut niveau du secteur financier et accueille les entreprises � capitaux �trangers pour approfondir la coop�ration mutuellement b�n�fique, a annonc� mardi � Beijing le vice-Premier ministre chinois He Lifeng. M....




chi

Chine Nouvelle publie un rapport sur l'�veil du Sud global au Br�sil

L'agence de presse Xinhua a publi� en langue chinoise, anglaise, espagnole et portugaise un rapport intitul� "L'�veil du Sud global" � l'occasion du Forum des m�dias et des groupes de r�flexion du Sud global tenu ce lundi et mardi � Sao Paulo au...




chi

Un rapport d'un groupe de r�flexion chinois "Un nouveau mod�le pour le progr�s humain et son importance mondiale" d�voil� au Br�sil

Le Forum des m�dias et des groupes de r�flexion du Sud global s'est tenu lundi et mardi � Sao Paulo, et un rapport intitul� "Un nouveau mod�le pour le progr�s humain et son importance mondiale" a �t� diffus� � cette occasion. Il fournit une...




chi

Le vice-Premier ministre chinois appelle au cours de la COP29 � renforcer les syst�mes d'alerte pr�coce pour tous

Le repr�sentant sp�cial du pr�sident chinois Xi Jinping, Ding Xuexiang, qui est �galement vice-Premier ministre de Chine, a appel� mardi � renforcer les syst�mes d'alerte pr�coce pour tous et � am�liorer les capacit�s d'adaptation au changement...




chi

Alg�rie : des livres chinois attirent l'attention des lecteurs lors du Salon international du livre d'Alger

Le stand chinois a attir� un large public, en particulier de jeunes visiteurs d�sireux de d�couvrir la culture et la langue chinoises lors de la 27e �dition du Salon international du livre d'Alger (SILA), a constat� sur place Xinhua. Selon Liu...




chi

La Chine et les pays d'Am�rique latine et des Cara�bes b�n�ficieront de perspectives plus prometteuses au cours des dix prochaines ann�es

Guid�e par la diplomatie des chefs d'Etat, la communaut� d'avenir partag� Chine-pays d'Am�rique latine et des Cara�bes b�n�ficiera de perspectives plus prometteuses durant la d�cennie � venir, a d�clar� mardi un porte-parole du minist�re chinois des...




chi

(CIIE) Des responsables et entrepreneurs �trangers pr�sents � la CIIE font l'�loge de l'ouverture de la Chine et des opportunit�s qu'elle offre

Lors de l'Exposition internationale d'importation de la Chine (CIIE) de cette ann�e � Shanghai, Ghazaryan Koryun, conseiller commercial � l'Ambassade d'Arm�nie en Chine, a pr�sent� aux visiteurs, dans un chinois courant, les vins et fruits de grande...




chi

La Chine s'appr�te � lancer le vaisseau cargo Tianzhou-8

La combinaison du vaisseau cargo Tianzhou-8 et d'une fus�e porteuse Longue Mache-7 Y9 a �t� verticalement transf�r�e mercredi vers la zone de lancement. Le vaisseau spatial sera lanc� � un moment opportun dans un proche avenir, selon l'Agence des...




chi

Un diplomate chinois � l'ONU exhorte Isra�l � cesser d'utiliser l'aide humanitaire � Gaza comme monnaie d'�change

Fu Cong, repr�sentant permanent de la Chine aupr�s des Nations Unies, a exhort� mardi Isra�l � lever les restrictions sur l'acc�s humanitaire � Gaza et � cesser d'utiliser l'aide humanitaire comme monnaie d'�change, alors que la situation...




chi

L'arm�e chinoise effectue des patrouilles de pr�paration au combat � Huangyan Dao

L'arm�e chinoise a effectu� mercredi des patrouilles de pr�paration au combat dans les eaux territoriales et l'espace a�rien territorial de Huangyan Dao, �le chinoise en mer de Chine m�ridionale, ainsi que dans des zones avoisinantes. Le...




chi

La modernisation chinoise favorise un nouveau mod�le de d�veloppement humain

Un rapport conjoint intitul� "Un nouveau mod�le pour le progr�s humain et son importance mondiale" a �t� publi� lors du Forum des m�dias et des groupes de r�flexion du Sud global qui s'est tenu lundi � Sao Paulo, au Br�sil. R�dig� par des groupes...




chi

Airbus pr�voit une forte demande d'avions en Chine au cours des 20 prochaines ann�es

Airbus a pr�vu que la Chine aurait besoin de plus de 9.500 nouveaux avions de transport de passagers et d'avions cargos au cours des deux prochaines d�cennies, en raison de la forte croissance de la demande de transport a�rien et de fret. Selon...




chi

Chine : la partie continentale encourage les �changes entre les jeunes et appelle � lever les restrictions sur les voyages entre les deux rives du d�troit de Taiwan

La partie continentale de la Chine a r�affirm� son engagement � promouvoir les �changes entre les jeunes � travers le d�troit de Taiwan et a demand� aux autorit�s du Parti d�mocrate progressiste (PDP) de lever les restrictions sur les voyages �...




chi

Chine : la partie continentale d�clare que les consultations entre les deux rives du d�troit sont possibles en reconnaissant le Consensus de 1992

Les consultations entre l'Association pour les relations entre les deux rives du d�troit de Taiwan (ARATS) et la Fondation pour les �changes entre les deux rives du d�troit de Taiwan (SEF) pourraient reprendre si les autorit�s de Taiwan...




chi

La Chine compte la plus grande capacit� totale de production d'�nergie nucl�aire dans le monde

La capacit� totale de production d'�nergie nucl�aire de la Chine, y compris les unit�s en fonctionnement, en construction et officiellement approuv�es, occupe la premi�re place mondiale, d'apr�s la Soci�t� de recherche �nerg�tique de Chine (China...




chi

Dix milliards de yuans de commande pour les moteurs a�ronautiques civils chinois

Aero Engine Corporation of China a annonc� mercredi qu'elle avait sign� des bons de commande et des contrats de coop�ration portant sur plus de 1.500 moteurs, pour une valeur totale de plus de 10 milliards de yuans (environ 1,39 milliard de...




chi

Chine : la puissance de l'aviation et de la d�fense de la partie continentale est une protection solide pour les compatriotes taiwanais

Une porte-parole de la partie continentale de la Chine a qualifi� les r�sultats et la puissance de la partie continentale dans les domaines de l'aviation, de l'a�rospatiale et de la d�fense nationale de protection "solide et immense" pour les...




chi

La Chine adopte des politiques fiscales pour soutenir le march� de l'immobilier

La Chine a promulgu� mercredi des politiques fiscales pour soutenir le d�veloppement stable et sain du march� de l'immobilier. Le minist�re des Finances a d�clar� que le pays augmenterait les incitations en termes de taxe sur les actes pour...




chi

Chine : croissance vigoureuse du secteur de la livraison express en octobre

Le secteur chinois de la livraison express a enregistr� une expansion rapide en octobre, avec une acc�l�ration significative du taux de croissance des affaires, selon un indice de l'industrie publi� mercredi par le Bureau national des postes. ...




chi

Chine : les investissements ferroviaires en hausse de 10,9% au cours des dix premiers mois

La Chine a continu� � accro�tre ses investissements dans la construction ferroviaire depuis le d�but de cette ann�e, d'apr�s des donn�es publi�es mercredi par l'op�rateur ferroviaire du pays. Durant la p�riode janvier-octobre, les investissements...




chi

La Chine et le Vietnam conviennent de renforcer leur coop�ration en mati�re de s�curit�

Chen Wenqing, haut responsable du Parti communiste chinois (PCC), a rencontr� Phan Dinh Trac, membre du Bureau politique et pr�sident de la Commission des affaires int�rieures du Comit� central du Parti communiste vietnamien (PCV), mardi � Beijing. ...




chi

La Chine est pr�te � cr�er davantage d'opportunit�s pour les partenaires de l'Asie-Pacifique gr�ce au d�veloppement et � l'ouverture

La Chine est pr�te � profiter de la 31e r�union des dirigeants �conomiques de l'APEC pour cr�er davantage d'opportunit�s pour les partenaires de l'Asie-Pacifique avec un d�veloppement de haute qualit� et une ouverture de haut niveau, a d�clar�...




chi

Le commerce de la Chine avec les autres �conomies de l'APEC a atteint un niveau record entre janvier et octobre

Le commerce de la Chine avec les autres �conomies de l'APEC a atteint un niveau record de 21.270 milliards de yuans (environ 2.950 milliards de dollars) au cours des dix premiers mois de 2024, selon les donn�es publi�es mercredi par l'Administration...




chi

12C: IN DATABASE ARCHIVING

In this post, I will demonstrate a new feature introduced in 12c : In database archiving. It enables you to archive rows within a table by marking them as invisible. This is accomplshed  by means of a hidden column ORA_ARCHIVE_STATE. These invisible rows are not visible to the queries but if needed, can be viewed , by setting a session parameter ROW ARCHIVAL VISIBILITY.

Overview:

-- Create test user uilm, tablespace ilmtbs
-- Connect as user uilm
-- create and populate test table (5 rows) ilmtab with row archival clause
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created   and has the default value of 0 (indicates that row is active)
-- Note that this column is not visible when we describe the table or simply issue select * from ...
-- We need to access data dictionary to view the column
-- Make two  rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
-- Check that inactive rows are not visible to query
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Set the parameter ROW ARCHIVAL VISIBILITY  = active to hide inactive rows
-- Issue an insert into ... select * and check that only 3 visible rows are inserted
-- Set the parameter ROW ARCHIVAL VISIBILITY  = all to see inactive rows also
-- Issue an insert into ... select * and check that all the rows are inserted but ORA_ARCHIVE_STATE    is not propagated in inserted rows
-- Disable row archiving in the table and check that column ORA_ARCHIVE_STATE is automatically dropped
-- drop tablespace ilmtbs and user uilm

Implementation :

-- Create test user, tablespace and test table
SQL> conn sys/oracle@em12c:1523/pdb1 as sysdba
sho con_name

CON_NAME
------------------------------
PDB1

SQL> set sqlprompt PDB1>

PDB1>create tablespace ilmtbs datafile '/u02/app/oracle/oradata/cdb1/pdb1/ilmtbs01.dbf' size 1m;
grant connect, resource, dba  to uilm identified by oracle;
alter user uilm default tablespace ilmtbs;

conn uilm/oracle@em12c:1523/pdb1
sho con_name

CON_NAME
------------------------------
PDB1
-- create table with "row archival clause"
PDB1>drop table ilmtab purge;
create table ilmtab (id number, txt char(15)) row archival;
insert into ilmtab values (1, 'one');
insert into ilmtab values (2, 'two');
insert into ilmtab values (3, 'three');
insert into ilmtab values (4, 'four');
insert into ilmtab values (5, 'five');
commit;
-- Note that the table has an additional column ORA_ARCHIVE_STATE automatically created    and has the default value of 0 (indicates that row is active)
PDB1>col ora_archive_state for a20
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
2 two             0
3 three           0
4 four            0
5 five            0
-- Note that this column is not visible when we describe the table or simply issue select * from ...
PDB1>desc ilmtab
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
ID                                                 NUMBER
TXT                                                CHAR(15)

PDB1>select * from ilmtab;

ID TXT
---------- ---------------
1 one
2 two
3 three
4 four
5 five
-- Since the column is invisible, let me try and make it visible
-- Note that Since the column is maintained by oracle itself, user can't modify its attributes
PDB1>alter table ilmtab modify (ora_archive_state visible);
alter table ilmtab modify (ora_archive_state visible)
*
ERROR at line 1:
ORA-38398: DDL not allowed on the system ILM column
-- We need to access data dictionary to view the column
-- Note that this column is shown as hidden and has not been generated by user
PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ORA_ARCHIVE_STATE    YES NO
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
-- We can make selected rows in the table inactive by setting ORA_ARCHIVE_STATE column to a non zero value.
This can be accomplished using update table... set ORA_ACRHIVE_STATE =
. <non-zero value>
. dbms_ilm.archivestatename(1)

-- Let's update row with id =1 with ORA_ARCHIVE_STATE=2
     and update row with id =2 with dbms_ilm.archivestatename(2)
PDB1>update ilmtab set ora_archive_state=2 where id=1;

update ilmtab set ora_archive_state= dbms_ilm.archivestatename(2) where id=2;
-- Let's check whether updates have been successful and hidden rows are not visible
PDB1>select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- The updated rows are not visible!!
-- Quite logical since we have made the rows active and by default only active rows are visible

-- To see inactive rows also, we need to set the parameter ROW ARCHIVAL VISIBILITY  = all at session level
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using
dbms_ilm.archivestatename(2)
PDB1>alter session set ROW ARCHIVAL VISIBILITY  = all;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
-- Note that the column ORA_ARCHIVE_STATE has been set to 1 for id =2 although we had set it to 2 using    dbms_ilm.archivestatename(2)

-- Let's find out why
-- Note that The function dbms_ilm.archivestatename(n) returns only two values    0 for n=0 and 1 for  n <> 0
PDB1>col state0 for a8
col state1 for a8
col state2 for a8
col state3 for a8

select dbms_ilm.archivestatename(0) state0 ,dbms_ilm.archivestatename(1) state1,
dbms_ilm.archivestatename(2) state2,dbms_ilm.archivestatename(3) state3  from dual;

STATE0   STATE1   STATE2   STATE3
-------- -------- -------- --------
0        1        1        1
-- In order to make the inactive rows (id=1,2) hidden again, we need to set the parameter ROW ARCHIVAL VISIBILITY  = Active
PDB1>alter session set row archival visibility = active;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
-- Let's issue an insert into ... select *
-- Note that only 3 new rows are visible
PDB1>insert into ilmtab select * from ilmtab;

select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

6 rows selected.
-- I want to check if hidden rows were also inserted
-- Let's check by making  hidden rows visible again
-- Note that only visible rows(id=3,4,5) were inserted
PDB1>alter session set row archival visibility=all;
select id, txt, ora_archive_state from ilmtab;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             2
2 two             1
3 three           0
4 four            0
5 five            0
3 three           0
4 four            0
5 five            0

8 rows selected.
-- Let's set row archival visibility = all and then again insert rows from ilmtab
-- Note that all the 8 rows are inserted but ORA_ARCHIVE_STATE ha not been copied    ORA_ARCHIVE_STATE <> 0 in only 2 records (id = 1,2) even now.
PDB1>alter session set row archival visibility=all;
insert into ilmtab select * from ilmtab;
select id, txt, ora_archive_state from ilmtab order by id;

ID TXT             ORA_ARCHIVE_STATE
---------- --------------- --------------------
1 one             0
1 one             2
2 two             0
2 two             1
3 three           0
3 three           0
3 three           0
3 three           0
4 four            0
4 four            0
4 four            0
4 four            0
5 five            0
5 five            0
5 five            0
5 five            0

16 rows selected.
-- Disable row level archiving for the table
-- Note that as soon as row archiving is disabled, pseudo column ora_archive_state is dropped automatically
PDB1>alter table ilmtab no row archival;
select id, txt, ORA_ARCHIVE_STATE from ilmtab;

ERROR at line 1:
ORA-00904: "ORA_ARCHIVE_STATE": invalid identifier

PDB1>col hidden for a7
col USER_GENERATED for 20
col USER_GENERATED for a20

select TABLE_NAME, COLUMN_NAME, HIDDEN_COLUMN, USER_GENERATED
from user_tab_cols where table_name='ILMTAB';

TABLE_NAME  COLUMN_NAME          HID USER_GENERATED
----------- -------------------- --- --------------------
ILMTAB      ID                   NO  YES
ILMTAB      TXT                  NO  YES
Note : Had we created this table using sys, we could not have disabled row archiving .

-- cleanup --
PDB1>conn sys/oracle@em12c:1523/pdb1 as sysdba
drop tablespace ilmtbs including contents and datafiles;
drop user uilm cascade;
References:

http://docs.oracle.com/cd/E16655_01/server.121/e17613/part_lifecycle.htm#VLDBG14154

----------------------------------------------------------------------------------------------------

Oracle 12c Index

----------------------------------------------------------------------------------------------

 




chi

Recursive WITH, part II: Hierarchical queries

articles: 

In my last post, I looked at using recursive WITH to implement simple recursive algorithms in SQL. One very common use of recursion is to traverse hierarchical data. I recently wrote a series of posts on hierarchical data, using Oracle’s CONNECT BY syntax and a fun example. In this post, I’ll be revisiting the same data using recursive WITH.

There are dozens of examples of hierarchical data, from the EMP table to the Windows Registry to binary trees, but I went with something more fun: the skeleton from the old song “Dem Dry Bones”.

Quote:
Toe bone connected to the foot bone
Foot bone connected to the heel bone
Heel bone connected to the ankle bone
Ankle bone connected to the shin bone
Shin bone connected to the knee bone
Knee bone connected to the thigh bone
Thigh bone connected to the hip bone
Hip bone connected to the back bone
Back bone connected to the shoulder bone
Shoulder bone connected to the neck bone
Neck bone connected to the head bone

Since every bone has only one ancestor, and there is a root bone with no ancestor, this is hierarchical data and we can stick it in a table and query it.

SELECT * FROM skeleton;
BONE                                     CONNECTED_TO_THE
---------------------------------------- ----------------------------------------
shoulder                                 neck
back                                     shoulder
hip                                      back
thigh                                    hip
knee                                     thigh
leg                                      knee
foot                                     heel
head
neck                                     head
toe                                      foot
arm                                      shoulder
wrist                                    arm
ankle                                    leg
heel                                     ankle
finger                                   wrist
a rib                                    back
b rib                                    back
c rib                                    back

You can see that I added some ribs and an arm to make the skeleton more complete!

Using Oracle’s CONNECT BY syntax:

SQL> col bone FOR a10
SQL> col connected_to_the FOR a9
SQL> col level FOR 99
SQL> col bone_tree FOR a27
SQL> col path FOR a65
 
SELECT bone, connected_to_the, level, 
lpad(' ',2*level, ' ') || bone AS bone_tree , 
ltrim(sys_connect_by_path(bone,'>'),'>') AS path
FROM skeleton
START WITH connected_to_the IS NULL
CONNECT BY prior bone=connected_to_the 
ORDER siblings BY 1

BONE       CONNECTED LEVEL BONE_TREE                   PATH
---------- --------- ----- --------------------------- -----------------------------------------------------------------
head                     1   head                      head
neck       head          2     neck                    head>neck
shoulder   neck          3       shoulder              head>neck>shoulder
arm        shoulder      4         arm                 head>neck>shoulder>arm
wrist      arm           5           wrist             head>neck>shoulder>arm>wrist
finger     wrist         6             finger          head>neck>shoulder>arm>wrist>finger
back       shoulder      4         back                head>neck>shoulder>back
a rib      back          5           a rib             head>neck>shoulder>back>a rib
b rib      back          5           b rib             head>neck>shoulder>back>b rib
c rib      back          5           c rib             head>neck>shoulder>back>c rib
hip        back          5           hip               head>neck>shoulder>back>hip
thigh      hip           6             thigh           head>neck>shoulder>back>hip>thigh
knee       thigh         7               knee          head>neck>shoulder>back>hip>thigh>knee
leg        knee          8                 leg         head>neck>shoulder>back>hip>thigh>knee>leg
ankle      leg           9                   ankle     head>neck>shoulder>back>hip>thigh>knee>leg>ankle
heel       ankle        10                     heel    head>neck>shoulder>back>hip>thigh>knee>leg>ankle>heel
foot       heel         11                       foot  head>neck>shoulder>back>hip>thigh>knee>leg>ankle>heel>foot
toe        foot         12                         toe head>neck>shoulder>back>hip>thigh>knee>leg>ankle>heel>foot>toe

The above CONNECT BY query uses the LEVEL pseudocolumn and the SYS_CONNECT_BY_PATH function. With recursive WITH, there’s no need for these built-ins because these values fall naturally out of the recursion.

Let’s start with the basic hierarchical query rewritten in recursive WITH.
The hierarchical relationship in our table is:
Parent(row.bone) = row.connected_to_the

WITH skellarchy (bone, parent) AS
 ( SELECT bone, connected_to_the FROM skeleton 
   WHERE bone = 'head'                         -- Start with the root
 UNION ALL
   SELECT s.bone, s.connected_to_the 
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           -- Parent(row.bone) = row.connected_to_the
 )
SELECT * FROM skellarchy;

BONE       PARENT
---------- ----------------------------------------
head
neck       head
shoulder   neck
back       shoulder
arm        shoulder
hip        back
wrist      arm
a rib      back
b rib      back
c rib      back
thigh      hip
finger     wrist
knee       thigh
leg        knee
ankle      leg
heel       ankle
foot       heel
toe        foot

Because we built up the SKELLARCHY table recursively, it’s easy to make an equivalent to the LEVEL pseudocolumn; it falls right out of the recursion:

WITH skellarchy (bone, parent, the_level) AS
 ( SELECT bone, connected_to_the, 0 FROM skeleton 
   WHERE bone = 'head'                         
 UNION ALL
   SELECT s.bone, s.connected_to_the , r.the_level + 1
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           
 )
SELECT * FROM skellarchy;

BONE       PARENT      THE_LEVEL
---------- ---------- ----------
head                           0
neck       head                1
shoulder   neck                2
back       shoulder            3
arm        shoulder            3
hip        back                4
wrist      arm                 4
a rib      back                4
b rib      back                4
c rib      back                4
thigh      hip                 5
finger     wrist               5
knee       thigh               6
leg        knee                7
ankle      leg                 8
heel       ankle               9
foot       heel               10
toe        foot               11

and it’s also easy to build up a path from root to the current node like the “SYS_CONNECT_BY_PATH” function does for CONNECT BY queries:

WITH skellarchy (bone, parent, the_level, the_path) AS
 ( SELECT bone, connected_to_the, 0, CAST(bone AS varchar2(4000)) FROM skeleton 
   WHERE bone = 'head'                         
 UNION ALL
   SELECT s.bone, s.connected_to_the , r.the_level + 1, r.the_path || '->' || s.bone
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           
 )
SELECT * FROM skellarchy;

BONE       PARENT     THE_LEVEL THE_PATH
---------- ---------- --------- --------------------------------------------------------------------------------
head                          0 head
neck       head               1 head->neck
shoulder   neck               2 head->neck->shoulder
back       shoulder           3 head->neck->shoulder->back
arm        shoulder           3 head->neck->shoulder->arm
hip        back               4 head->neck->shoulder->back->hip
wrist      arm                4 head->neck->shoulder->arm->wrist
a rib      back               4 head->neck->shoulder->back->a rib
b rib      back               4 head->neck->shoulder->back->b rib
c rib      back               4 head->neck->shoulder->back->c rib
thigh      hip                5 head->neck->shoulder->back->hip->thigh
finger     wrist              5 head->neck->shoulder->arm->wrist->finger
knee       thigh              6 head->neck->shoulder->back->hip->thigh->knee
leg        knee               7 head->neck->shoulder->back->hip->thigh->knee->leg
ankle      leg                8 head->neck->shoulder->back->hip->thigh->knee->leg->ankle
heel       ankle              9 head->neck->shoulder->back->hip->thigh->knee->leg->ankle->heel
foot       heel              10 head->neck->shoulder->back->hip->thigh->knee->leg->ankle->heel->foot
toe        foot              11 head->neck->shoulder->back->hip->thigh->knee->leg->ankle->heel->foot->toe

and we can use our generated the_level column to make a nice display just as we used the level pseudocolumn with CONNECT BY:

WITH skellarchy (bone, parent, the_level) AS
 ( SELECT bone, connected_to_the, 0  FROM skeleton 
   WHERE bone = 'head'                         
 UNION ALL
   SELECT s.bone, s.connected_to_the , r.the_level + 1
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           
 )
SELECT lpad(' ',2*the_level, ' ') || bone AS bone_tree FROM skellarchy;

BONE_TREE
---------------------------
head
  neck
    shoulder
      back
      arm
        hip
        wrist
        a rib
        b rib
        c rib
          thigh
          finger
            knee
              leg
                ankle
                  heel
                    foot
                      toe

Now, the bones are coming out in a bit of a funny order for a skeleton. Instead of this:

    shoulder
      back
      arm
        hip
        wrist
        a rib
        b rib
        c rib
          thigh
          finger

I want to see this:

    shoulder
      arm
        wrist
          finger
      back
        a rib
        b rib
        c rib
        hip
          thigh

The rows are coming out in BREADTH FIRST ordering – meaning all siblings of ‘shoulder’ are printed before any children of ‘shoulder’. But I want to see them in DEPTH FIRST: going from shoulder to finger before we start on the backbone.

WITH skellarchy (bone, parent, the_level) AS
 ( SELECT bone, connected_to_the, 0  FROM skeleton 
   WHERE bone = 'head'                         
 UNION ALL
   SELECT s.bone, s.connected_to_the , r.the_level + 1
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           
 )
SEARCH DEPTH FIRST BY bone SET bone_order
SELECT lpad(' ',2*the_level, ' ') || bone AS bone_tree FROM skellarchy
ORDER BY bone_order;

BONE_TREE
---------------------------
head
  neck
    shoulder
      arm
        wrist
          finger
      back
        a rib
        b rib
        c rib
        hip
          thigh
            knee
              leg
                ankle
                  heel
                    foot
                      toe

And now the result looks more like a proper skeleton.

Now on to cycles. A cycle is a loop in the hierarchical data: a row is its own ancestor. To put a cycle in the example data, I made the skeleton bend over and connect the head to the toe:

UPDATE skeleton SET connected_to_the='toe' WHERE bone='head';

And now if we try to run the query:

ERROR at line 2:
ORA-32044: cycle detected while executing recursive WITH query

With the CONNECT BY syntax, we can use CONNECT BY NOCYCLE to run a query even when cycles exist, and the pseudocolumn CONNECT_BY_IS_CYCLE to help detect cycles. For recursive WITH, Oracle provides a CYCLE clause, which is a bit more powerful as it allows us to name the column which is cycling.

WITH skellarchy (bone, parent, the_level) AS
 ( SELECT bone, connected_to_the, 0  FROM skeleton 
   WHERE bone = 'head'                         
 UNION ALL
   SELECT s.bone, s.connected_to_the , r.the_level + 1
   FROM skeleton s, skellarchy r
   WHERE r.bone = s.connected_to_the           
 )
SEARCH DEPTH FIRST BY bone SET bone_order
CYCLE bone SET is_a_cycle TO 'Y' DEFAULT 'N'
SELECT lpad(' ',2*the_level, ' ') || bone AS bone_tree, is_a_cycle FROM skellarchy
--where is_a_cycle='N'
ORDER BY bone_order;

BONE_TREE                                                    I
------------------------------------------------------------ -
head                                                         N
  neck                                                       N
    shoulder                                                 N
      arm                                                    N
        wrist                                                N
          finger                                             N
      back                                                   N
        a rib                                                N
        b rib                                                N
        c rib                                                N
        hip                                                  N
          thigh                                              N
            knee                                             N
              leg                                            N
                ankle                                        N
                  heel                                       N
                    foot                                     N
                      toe                                    N
                        head                                 Y

The query runs until the first cycle is detected, then stops.

The CONNECT BY syntax does provide a nice pseudocolumn, CONNECT_BY_ISLEAF, which is 1 when a row has no further children, 0 otherwise. In my next post, I’ll look at emulating this pseudocolumn with recursive WITH.


Republished with permission. Original URL: http://rdbms-insight.com/wp/?p=103




chi

Chicago Bears sign restricted free agent tight end Josh Hill to an offer sheet

The Bears have signed restricted free agent tight end Josh Hill. The New Orleans Saints have five days to match the offer.




chi

ChinaSprout.com




chi

Ford schickt Kölner Beschäftigte in Kurzarbeit

Ford hat für sein Kölner Werk Kurzarbeit angemeldet. Hintergrund sei die schwache Nachfrage nach Elektroautos. Der Autobauer will deshalb im kommenden Jahr weniger Fahrzeuge in Köln bauen.




chi

Child Heatstroke: Where's baby? Look before you lock

NHSTA today announced its first-ever national campaign to prevent child heatstroke deaths in cars, urging parents and caregivers to think "Where's baby? Look before you lock. " Heatstroke is the leading cause of non-crash, vehicle related deaths for children under the age of 14, with at least 33 fatalities reported in 2011 alone... Child Heatstroke: Where's baby? Look before you lock




chi

This Can Have You Scratching Your Head

It was a late night last night of updating and
improving and in the process of doing that it got me
thinking . . .

An online business, and even more so an internet
network marketing business, can really get you
scratching your head sometimes.

We're conditioned to think in a linear fashion. Do
this and get that result is really how we think.

Work 40 hours a week and get paid for 40 hours of
work. It's how we grew up and for most of us it's
how we were conditioned to think about our results in
life.

When it comes to business this isn't always the case,
and really most of the time it's not the case.

Business is not a linear thing.

Just yesterday I was sitting at my computer
scratching my head.

4 people joined my business directly with me as their
sponsor in the last 2 days. Not something to
complain about, after all I am the king of never
calling a single lead and that's the way things work
most of the time in my business, but this time it was
a little different.

You see during that period I had absolutely no ads
running for my business and still 4 people joined
with me as their sponsor without me having to do a
thing, meanwhile my first year in the business all
I did was prospect and call leads and nothing happened.

Why is it so easy now?

Well, once you have passive traffic coming your way
good things happen and you don't have to do
anything additional actively for those good results.

But this can get people confused. I know it did for
me for a long time. Some days would be great with
little effort and some days would be not so great
with a Herculean effort.

What the heck right?

That's business for you. It's not linear. You set it
up and once you get all the pieces in place
sometimes the results flow like the mighty Amazon and
others well just one lead would keep you going.

This shift stunts most. They still want to think that
their efforts should correlate directly to their
results and when it doesn't it frustrated the heck of
them. The best advice is settle down, know your
conversion figures, and just keep on pushing.

Let me tell you . . .

If you have a great marketing system, you're doing
the right things for generating interest in your
business via your marketing system you're on the
right track despite what the results show.

They will exceed your expectations in the long run.

Think about your business like this. It's more like
having a boat tethered to port by several ropes
than going to the J.O.B.

You may spend a huge effort getting one rope off and
you've made progress, but there is still 8 more
ropes to go and nothings moving.

You've made positive progress and you know it, just
don't let money be the only marker of your success
in the beginning.

That will come.



What if you could make a living online? How would
you're life change? What would you do? I took this
course and that dream has become a reality in my life
and because it I recommend it as a MUST have for
any truly interested. Go here now:
==> http://www.opportunity-waits.com




chi

The Flying Monkeys Made Me Do It Children's Baseball Jersey

This Kids Baseball Jersey lets everyone know whose fault it really was, the flying monkeys made you do it - It's absolutely true. It's not really your fault. In fact, even though you were the one that actually did do it, it still isn't your fault at all. Of course you shouldn't take responsibility for what happened, you just couldn't help yourself. But, first and foremost when you do get blamed, make sure you point the blame in the right direction. It's not the dog's fault nor is it the fault of the voices in your head that you have been listening too, nor was it the ghost of Elvis, and the devil definitely didn't make you do it either. Certainly, that can only leave one option left, the ones that are truly behind it all, the flying monkeys. That's absolutely right. It was the flying monkeys that made you do it. Now is your chance to fianlly reveal the truth of who's really behind it all.




chi

The Flying Monkeys Made Me Do It Children's Hoodie

This Kids Hooded Sweatshirt lets everyone know whose fault it really was, the flying monkeys made you do it - It's absolutely true. It's not really your fault. In fact, even though you were the one that actually did do it, it still isn't your fault at all. Of course you shouldn't take responsibility for what happened, you just couldn't help yourself. But, first and foremost when you do get blamed, make sure you point the blame in the right direction. It's not the dog's fault nor is it the fault of the voices in your head that you have been listening too, nor was it the ghost of Elvis, and the devil definitely didn't make you do it either. Certainly, that can only leave one option left, the ones that are truly behind it all, the flying monkeys. That's absolutely right. It was the flying monkeys that made you do it. Now is your chance to fianlly reveal the truth of who's really behind it all.




chi

The Flying Monkeys Made Me Do It Children's Sweatshirt

This Kids Sweatshirt lets everyone know whose fault it really was, the flying monkeys made you do it - It's absolutely true. It's not really your fault. In fact, even though you were the one that actually did do it, it still isn't your fault at all. Of course you shouldn't take responsibility for what happened, you just couldn't help yourself. But, first and foremost when you do get blamed, make sure you point the blame in the right direction. It's not the dog's fault nor is it the fault of the voices in your head that you have been listening too, nor was it the ghost of Elvis, and the devil definitely didn't make you do it either. Certainly, that can only leave one option left, the ones that are truly behind it all, the flying monkeys. That's absolutely right. It was the flying monkeys that made you do it. Now is your chance to fianlly reveal the truth of who's really behind it all.




chi

The Flying Monkeys Made Me Do It Children's T-Shirt

This Kids T-Shirt lets everyone know whose fault it really was, the flying monkeys made you do it - It's absolutely true. It's not really your fault. In fact, even though you were the one that actually did do it, it still isn't your fault at all. Of course you shouldn't take responsibility for what happened, you just couldn't help yourself. But, first and foremost when you do get blamed, make sure you point the blame in the right direction. It's not the dog's fault nor is it the fault of the voices in your head that you have been listening too, nor was it the ghost of Elvis, and the devil definitely didn't make you do it either. Certainly, that can only leave one option left, the ones that are truly behind it all, the flying monkeys. That's absolutely right. It was the flying monkeys that made you do it. Now is your chance to fianlly reveal the truth of who's really behind it all.




chi

Motorcycle Therapy Childrens Hoodie

For Some There's Therapy, For The Rest Of Us There's Motorcycles Kids Hoodie - For some there's therapy, for the rest of us there's motorcycles. Sometimes the best way escape reality a little bit to relax, unwind, think about and make sense of life is to hop on our motorcycle and head for the open road whether it's through the twisties of a canyon or mountain or the open desert highway. The freedom and peace of being at one with a machine and the open road is therapy that is almost unequalled by anything else. So, forget the shrink. Forget the counselors. Forget the psychiatrists. Forget the therapists. Relieve the stress, makes some sense out of life, grin from ear to ear. Just get on your bike and ride.




chi

Motorcycle Therapy Childrens T-Shirt

For Some There's Therapy, For The Rest Of Us There's Motorcycles Kids T-Shirt - For some there's therapy, for the rest of us there's motorcycles. Sometimes the best way escape reality a little bit to relax, unwind, think about and make sense of life is to hop on our motorcycle and head for the open road whether it's through the twisties of a canyon or mountain or the open desert highway. The freedom and peace of being at one with a machine and the open road is therapy that is almost unequalled by anything else. So, forget the shrink. Forget the counselors. Forget the psychiatrists. Forget the therapists. Relieve the stress, makes some sense out of life, grin from ear to ear. Just get on your bike and ride.




chi

Relaunching My Website. This Time, It's True

For years, I've been saying that I'm going to relaunch this blog and relaunch my website and frankly given life and work, it just hasn't happened. But my life is in major flux right now, and I'm trying out a...




chi

LXer: Stellaris: Grand Archive set for launch October 29th as Paradox teams up with Abrakam

Published at LXer: Paradox Interactive teamed up with another developer again for the new Stellaris: Grand Archive DLC, which is blasting off on October 29th. Stellaris has Native Linux support and...



  • Syndicated Linux News

chi

LXer: (Updated) Radxa ROCK 2F: An Upcoming Compact 4K Computer with Rockchip RK3528A and Wi-Fi 6

Published at LXer: The Radxa ROCK 2F is a small computing device designed for a wide range of uses, from development projects to multimedia setups. It�s packed with features, including multiple...



  • Syndicated Linux News

chi

LXer: Machine Learning in Linux: Reor - AI note-taking app

Published at LXer: Reor is a private AI personal knowledge management tool. Think of it as a notes program on steroids. Each note is saved as a Markdown file to a �vault� directory on your machine....



  • Syndicated Linux News

chi

Noël made in China

A pékin aussi on s’apprête à fêter Noël comme il se doit… avec ou sans le sourire. Hesiem, Pékin (Chine)




chi

Moving the Root Partition to a New Disk in Ubuntu 18.10 (General GRUB Chicanery)

I had a Ubuntu 18.10 install setup perfectly on a disk shared with a Windows 10 install. I originally setup Windows 10 and then reduced the size of the Windows 10 partition to make room for a Ubuntu 18.10 install. After the install of Windows 10 and the Ubuntu 18.10 install I had these partitions: […]

The post Moving the Root Partition to a New Disk in Ubuntu 18.10 (General GRUB Chicanery) first appeared on robotthoughts.




chi

JabTV Presents - DNA Slot Machine featuring Britney Spears

Michael Jackson with Britney Spears legs! Oh my! It's the DNA slot machine, bet on mixing and matching celebrities DNA.