query planner stuff

some gcc -Wall fixes
added suport for _ in identifier names in SQL
gmdb2 manual additions
This commit is contained in:
brianb
2003-01-20 16:04:24 +00:00
parent bafa51bd88
commit 092e2b79af
34 changed files with 1143 additions and 382 deletions

View File

@@ -23,9 +23,9 @@
#include "mdbtools.h"
int
main (int argc, char **argv)
{
int rows;
int i, j;
MdbHandle *mdb;
MdbCatalogEntry *entry;

View File

@@ -21,11 +21,10 @@
#include "mdbtools.h"
#define is_text_type(x) (x==MDB_TEXT || x==MDB_MEMO || x==MDB_SDATETIME)
int
main(int argc, char **argv)
{
int rows;
int i, j;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;

View File

@@ -29,6 +29,7 @@ void copy_header (FILE *f)
fprintf (f, "/******************************************************************/\n");
}
int
main (int argc, char **argv)
{
int i, j, k;

View File

@@ -21,6 +21,8 @@
/* generates an array of type FOO */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAMESIZE 128
#define BUFFERSIZE 4096
@@ -36,6 +38,7 @@ void copy_header (FILE *f)
fprintf (f, "/******************************************************************/\n");
}
int
main (int argc, char **argv)
{
char txt_filename [FILENAMESIZE];

View File

@@ -20,9 +20,10 @@
#include "mdbtools.h"
int
main (int argc, char **argv)
{
int i, j, k;
int i, k;
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;

View File

@@ -33,6 +33,8 @@ int headers = 1;
int footers = 1;
int pretty_print = 1;
char *delimiter;
int showplan = 0;
int noexec = 0;
#ifndef HAVE_READLINE
char *readline(char *prompt)
@@ -88,15 +90,78 @@ do_set_cmd(MdbSQL *sql, char *s)
} else {
printf("Unknown stats option %s\n", level2);
}
} else if (!strcmp(level1,"showplan")) {
level2 = strtok(NULL, " \t");
if (!strcmp(level2,"on")) {
showplan=1;
} else if (!strcmp(level2,"off")) {
showplan=0;
} else {
printf("Unknown showplan option %s\n", level2);
}
} else if (!strcmp(level1,"noexec")) {
level2 = strtok(NULL, " \t");
if (!strcmp(level2,"on")) {
noexec=1;
} else if (!strcmp(level2,"off")) {
noexec=0;
} else {
printf("Unknown showplan option %s\n", level2);
}
} else {
printf("Unknown set command %s\n", level1);
}
}
int
read_file(char *s, int line, int *bufsz, char *mybuf)
{
char *fname;
FILE *in;
char buf[256];
int cursz = 0;
int lines = 0;
fname = s;
while (*fname && *fname==' ') fname++;
if (! (in = fopen(fname, "r"))) {
fprintf(stderr,"Unable to open file %s\n", fname);
mybuf[0]=0;
return 0;
}
while (fgets(buf, 255, in)) {
cursz += strlen(buf) + 1;
if (cursz > (*bufsz)) {
(*bufsz) *= 2;
mybuf = (char *) realloc(mybuf, *bufsz);
}
strcat(mybuf, buf);
add_history(buf);
strcat(mybuf, "\n");
lines++;
printf("%d => %s",line+lines, buf);
}
return lines;
}
void
run_query(MdbSQL *sql, char *mybuf)
{
MdbTableDef *table;
if (!parse(sql, mybuf) && sql->cur_table) {
if (showplan) {
table = sql->cur_table;
if (tabl->sarg_tree) mdb_sql_dump_node(table->sarg_tree, 0);
if (sql->cur_table->strategy == MDB_TABLE_SCAN)
printf("Table scanning %s\n", table->name);
else
printf("Index scanning %s using %s\n", table->name, table->scan_idx->name);
}
if (noexec) {
mdb_sql_reset(sql);
return;
}
mdbsql_bind_all(sql);
if (pretty_print)
dump_results_pp(sql);
@@ -233,6 +298,7 @@ void myexit(int r)
free(delimiter);
exit(r);
}
int
main(int argc, char **argv)
{
char *s;
@@ -303,6 +369,8 @@ FILE *in = NULL, *out = NULL;
} else {
sprintf(prompt,"1 => ");
s=readline(prompt);
if (!strcmp(s,"exit") || !strcmp(s,"quit") || !strcmp(s,"bye"))
done = 1;
}
while (!done) {
if (line==1 && !strncmp(s,"set ", 4)) {
@@ -315,6 +383,8 @@ FILE *in = NULL, *out = NULL;
} else if (!strcmp(s,"reset")) {
line = 0;
mybuf[0]='\0';
} else if (!strncmp(s,":r",2)) {
line += read_file(&s[2], line, &bufsz, mybuf);
} else {
while (strlen(mybuf) + strlen(s) > bufsz) {
bufsz *= 2;
@@ -346,6 +416,8 @@ FILE *in = NULL, *out = NULL;
mdb_sql_exit(sql);
myexit(0);
return 0; /* make gcc -Wall happy */
}
#else
int main(int argc, char **argv)

View File

@@ -20,13 +20,12 @@
#include "mdbtools.h"
int
main (int argc, char **argv)
{
int i, j, k;
int i;
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;
MdbColumn *col;
char *delimiter = NULL;
int line_break=0;
int skip_sys=1;

View File

@@ -20,21 +20,11 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
int rows;
int i, j;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry entry;
MdbTableDef *table;
MdbColumn *col;
/* doesn't handle tables > 256 columns. Can that happen? */
char *bound_values[256];
char *delimiter = ",";
char header_row = 1;
char quote_text = 1;
int opt;
/*
** optind is now the position of the first non-option arg,

View File

@@ -18,16 +18,10 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
off_t offset=0;
int fd, i, j;
char xdigit;
short digit;
struct stat status;
int rows, cur, off;
unsigned char buf[2048];
MdbHandle *mdb;
MdbHandle *mdb;
if (argc<2) {

View File

@@ -20,16 +20,13 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;
GList *l;
if (argc<2) {
fprintf(stderr,"Usage: %s <file> <table>\n",argv[0]);

View File

@@ -20,15 +20,10 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry entry;
MdbTableDef *table;
GList *l;
int j;
int page, start, stop;

View File

@@ -22,9 +22,10 @@
extern char idx_to_text[];
void walk_index(MdbHandle *mdb, MdbIndex *idx);
int
main(int argc, char **argv)
{
int rows;
int i, j;
MdbHandle *mdb;
MdbCatalogEntry *entry;
@@ -84,6 +85,7 @@ page_name(int page_type)
case 0x03: return "Index"; break;
case 0x04: return "Index Leaf"; break;
case 0x05: return "Page Usage"; break;
default: return "Unknown";
}
}
void check_row(MdbHandle *mdb, MdbIndex *idx, guint32 pg, int row, unsigned char *idxrow, int len)
@@ -94,7 +96,7 @@ void check_row(MdbHandle *mdb, MdbIndex *idx, guint32 pg, int row, unsigned char
int row_start, row_end;
MdbColumn *col;
guchar buf[256], key[256];
int elem, pos;
int elem;
MdbTableDef *table = idx->table;
fmt = mdb->fmt;
@@ -127,7 +129,6 @@ void
walk_index(MdbHandle *mdb, MdbIndex *idx)
{
int start, len;
unsigned char byte;
guint32 pg;
guint16 row;
MdbHandle *mdbidx;

View File

@@ -18,15 +18,14 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry entry;
#if 0
int i;
MdbCatalogEntry entry;
if (argc<2) {
fprintf(stderr,"Usage: %s <file> <table>\n",argv[0]);
exit(1);

View File

@@ -22,15 +22,13 @@
void dump_ole(MdbTableDef *table, char *colname, char *sargname);
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;
GList *l;
char *dot, *colname, *tabname;
char *sargname = NULL;

View File

@@ -20,14 +20,12 @@
#include "mdbtools.h"
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry *entry;
GList *l;
int found = 0;

View File

@@ -22,17 +22,15 @@
void read_to_row(MdbTableDef *table, char *sargname);
int
main(int argc, char **argv)
{
int rows;
int i;
unsigned char buf[2048];
MdbHandle *mdb;
MdbCatalogEntry *entry;
MdbTableDef *table;
GList *l;
char *dot, *colname, *tabname;
char *colop, *colval;
char *colname, *tabname;
char *colval;
char *sargname = NULL;
char *updstr = NULL;
unsigned char data[255];