1: #include <btree.h> 2: #include <ingres.h> 3: #include <aux.h> 4: #include <sccs.h> 5: 6: SCCSID(@(#)create_btree.c 8.2 1/18/85) 7: 8: /* CREATE_BTREE -- creates a new B-Tree 9: ** 10: ** Creates an empty B-Tree whose root is an empty leaf. The B-Tree 11: ** filename is the relation name with "TREE" concatenated to the end 12: ** of the name. 13: ** 14: ** Parameters: 15: ** relname - relation name (I) 16: */ 17: 18: create_btree(relname) 19: char *relname; 20: 21: { 22: struct BTreeNode root; 23: register int i; 24: extern int Btree_fd; 25: 26: root.depth = 1; 27: root.prevtree = root.nexttree = 0l; 28: bmove(&root.prevtree, &root.prttree, LIDSIZE); 29: /* the root is initially an empty leaf node */ 30: root.nodetype = 'L'; 31: root.nelmts = 0; 32: root.parent = 0; /* '0' indicates no other empty pages in file */ 33: 34: root.node.leafnode.prevleaf = 0; 35: root.node.leafnode.nextleaf = 0; 36: 37: for (i = 0; i< MAXLEAVES; ++i) 38: root.node.leafnode.tid_loc[i] = root.node.leafnode.back_ptr[i] = i; 39: 40: close(creat(relname, FILEMODE)); 41: if ((Btree_fd = open(relname, O_RDWR)) < 0) 42: syserr("create_btree: can't open %s", relname); 43: write_node(RT, &root); 44: 45: # ifdef xATR1 46: if (tTf(24, 0)) 47: printf("creating btree %s", relname); 48: # endif 49: 50: }