00001 #include <string.h>
00002 #include <grass/dbmi.h>
00003
00004 static void print_priv();
00005
00012 void
00013 db_print_table_definition (FILE *fd, dbTable *table)
00014
00015 {
00016 int ncols, col;
00017 dbColumn *column;
00018
00019 fprintf (fd, "table:%s\n", db_get_table_name(table));
00020 fprintf (fd, "description:%s\n", db_get_table_description(table));
00021 print_priv (fd, "insert", db_get_table_insert_priv(table));
00022 print_priv (fd, "delete", db_get_table_delete_priv(table));
00023
00024 ncols = db_get_table_number_of_columns(table);
00025 fprintf (fd, "ncols:%d\n", ncols);
00026 for (col = 0; col < ncols; col++)
00027 {
00028 column = db_get_table_column (table, col);
00029 fprintf (fd, "\n");
00030 db_print_column_definition (fd, column);
00031 }
00032 }
00033
00034 void
00035 db_print_column_definition (FILE *fd, dbColumn *column)
00036
00037 {
00038 dbString value_string;
00039
00040 fprintf (fd, "column:%s\n", db_get_column_name(column));
00041 fprintf (fd, "description:%s\n", db_get_column_description(column));
00042 fprintf (fd, "type:%s\n", db_sqltype_name(db_get_column_sqltype(column)));
00043 fprintf (fd, "len:%d\n", db_get_column_length(column));
00044 fprintf (fd, "scale:%d\n", db_get_column_scale(column));
00045 fprintf (fd, "precision:%d\n", db_get_column_precision(column));
00046 fprintf (fd, "default:");
00047 if (db_test_column_has_default_value(column))
00048 {
00049 db_init_string(&value_string);
00050 db_convert_column_default_value_to_string (column, &value_string);
00051 fprintf (fd, "%s", db_get_string(&value_string));
00052 }
00053 fprintf (fd, "\n");
00054 fprintf (fd, "nullok:%s\n", db_test_column_null_allowed(column) ? "yes" : "no");
00055 print_priv (fd, "select", db_get_column_select_priv(column));
00056 print_priv (fd, "update", db_get_column_update_priv(column));
00057 }
00058
00059 static void
00060 print_priv (FILE *fd, char *label, int priv)
00061
00062 {
00063 fprintf (fd, "%s:", label);
00064 switch (priv)
00065 {
00066 case DB_GRANTED: fprintf (fd, "yes"); break;
00067 case DB_NOT_GRANTED: fprintf (fd, "no"); break;
00068 default: fprintf (fd, "?"); break;
00069 }
00070 fprintf (fd, "\n");
00071 }