Subclassing GdaDataSelect

Subclassing GdaDataSelect — Base class for all the data models returned by DBMS providers when a SELECT statement is executed

Stability Level

Stable, unless otherwise indicated

Types and Values

Includes

#include <libgda/providers-support/gda-data-select-priv.h>

Description

All database providers should subclass this class when returning a data model after the execution of a SELECT statement. Specifically it has the following features:

  • Manages its list of GdaColumn using the list exported by the prepared statement object (GdaPStmt)

  • Allows random or cursor based access

  • Allows for efficient memory usage allowing the subclass to finely tune its memory usage

  • Provides a generic mechanism for writable data models

See the Virtual methods for recordsets section for more information about how to implement the virtual methods of the subclassed object.

This section documents the methods available for the database provider's implementations.

Functions

gda_data_select_take_row ()

void
gda_data_select_take_row (GdaDataSelect *model,
                          GdaRow *row,
                          gint rownum);

Stores row into model , externally advertized at row number rownum (if no row has been removed). The reference to row is stolen.

This function is used by database provider's implementations

Parameters

model

a GdaDataSelect data model

 

row

a GdaRow row.

[transfer full]

rownum

"external" advertized row number

 

gda_data_select_get_stored_row ()

GdaRow *
gda_data_select_get_stored_row (GdaDataSelect *model,
                                gint rownum);

Get the GdaRow object stored within model at row rownum (without taking care of removed rows)

Parameters

model

a GdaDataSelect data model

 

rownum

"external" advertized row number

 

Returns

the requested GdaRow, or NULL if not found.

[transfer none]


gda_data_select_get_connection ()

GdaConnection *
gda_data_select_get_connection (GdaDataSelect *model);

Get a pointer to the GdaConnection object which was used when model was created (and which may be used internally by model ).

Parameters

model

a GdaDataSelect data model

 

Returns

a pointer to the GdaConnection, or NULL.

[transfer none]


gda_data_select_set_columns ()

void
gda_data_select_set_columns (GdaDataSelect *model,
                             GSList *columns);

Makes columns the list of columns for model . Both the list and each GdaColumn object in the list are 'stolen' by model (ie. when this function returns the caller should not use anymore the list or each column object in it). This method should not be used directly, it is used by database provider's implementations.

Parameters

model

a GdaDataSelect data model

 

columns

a lis of GdaColumn objects.

[transfer full]

Since 4.2.1


gda_column_set_name ()

void
gda_column_set_name (GdaColumn *column,
                     const gchar *name);

Sets the name of column to name .

Parameters

column

a GdaColumn.

 

name

the new name of column .

 

gda_column_set_description ()

void
gda_column_set_description (GdaColumn *column,
                            const gchar *title);

Sets the column's description

Parameters

column

a GdaColumn.

 

title

title name.

 

gda_column_set_dbms_type ()

void
gda_column_set_dbms_type (GdaColumn *column,
                          const gchar *dbms_type);

Defines column 's database type

Parameters

column

a GdaColumn

 

dbms_type

a string

 

gda_column_set_g_type ()

void
gda_column_set_g_type (GdaColumn *column,
                       GType type);

Sets the type of column to type .

Parameters

column

a GdaColumn.

 

type

the new type of column .

 

gda_column_set_allow_null ()

void
gda_column_set_allow_null (GdaColumn *column,
                           gboolean allow);

Sets the 'allow null' flag of the given column.

Parameters

column

a GdaColumn.

 

allow

whether the given column should allows null values or not.

 

gda_column_set_auto_increment ()

void
gda_column_set_auto_increment (GdaColumn *column,
                               gboolean is_auto);

Sets the auto increment flag for the given column.

Parameters

column

a GdaColumn.

 

is_auto

auto increment status.

 

gda_column_set_position ()

void
gda_column_set_position (GdaColumn *column,
                         gint position);

Sets the position of the column refer to in the containing data model.

Parameters

column

a GdaColumn.

 

position

the wanted position of the column in the containing data model.

 

gda_column_set_default_value ()

void
gda_column_set_default_value (GdaColumn *column,
                              const GValue *default_value);

Sets column 's default GValue.

Parameters

column

a GdaColumn.

 

default_value

default GValue for the column.

[allow-none]

gda_alphanum_to_text ()

gchar *
gda_alphanum_to_text (gchar *text);

Does the opposite of gda_text_to_alphanum(), in the same string

Parameters

text

a string

 

Returns

text if conversion succeeded or NULL if an error occurred


gda_text_to_alphanum ()

gchar *
gda_text_to_alphanum (const gchar *text);

The "encoding" consists in replacing non alphanumeric character with the string "__gdaXX" where XX is the hex. representation of the non alphanumeric char.

Parameters

text

the text to convert

 

Returns

a new string


gda_data_model_iter_move_next_default ()

gboolean
gda_data_model_iter_move_next_default (GdaDataModel *model,
                                       GdaDataModelIter *iter);

Method reserved to GdaDataModelIter implementations, should not be called directly.

Parameters

model

a GdaDataModel

 

iter

a GdaDataModelIter iterating in model

 

Returns

TRUE if iter was moved correctly.


gda_data_model_iter_move_prev_default ()

gboolean
gda_data_model_iter_move_prev_default (GdaDataModel *model,
                                       GdaDataModelIter *iter);

Method reserved to GdaDataModelIter implementations, should not be called directly.

Parameters

model

a GdaDataModel

 

iter

a GdaDataModelIter iterating in model

 

Returns

TRUE if iter was moved correctly.


gda_row_invalidate_value ()

void
gda_row_invalidate_value (GdaRow *row,
                          GValue *value);

Marks value as being invalid. This method is mainly used by database providers' implementations to report any error while reading a value from the database.

Parameters

row

a GdaRow

 

value

a GValue belonging to row (obtained with gda_row_get_value()).

 

gda_row_invalidate_value_e ()

void
gda_row_invalidate_value_e (GdaRow *row,
                            GValue *value,
                            GError *error);

Marks value as being invalid. This method is mainly used by database providers' implementations to report any error while reading a value from the database.

Parameters

row

a GdaRow

 

value

a GValue belonging to row (obtained with gda_row_get_value()).

 

error

the error which lead to the invalidation.

[allow-none][transfer full]

Since 4.2.10


gda_row_value_is_valid ()

gboolean
gda_row_value_is_valid (GdaRow *row,
                        GValue *value);

Tells if value has been marked as being invalid by gda_row_invalidate_value(). This method is mainly used by database providers' implementations to report any error while reading a value from the database.

Parameters

row

a GdaRow.

 

value

a GValue belonging to row (obtained with gda_row_get_value()).

 

Returns

TRUE if value is valid


gda_row_value_is_valid_e ()

gboolean
gda_row_value_is_valid_e (GdaRow *row,
                          GValue *value,
                          GError **error);

Tells if value has been marked as being invalid by gda_row_invalidate_value(). This method is mainly used by database providers' implementations to report any error while reading a value from the database.

Parameters

row

a GdaRow.

 

value

a GValue belonging to row (obtained with gda_row_get_value()).

 

error

a place to store the invalid error, or NULL.

[allow-none]

Returns

TRUE if value is valid

Since 4.2.10

Types and Values

struct GdaDataSelectClass

struct GdaDataSelectClass {
	GObjectClass      parent_class;

	/* GDA_DATA_MODEL_ACCESS_RANDOM */
	gint             (*fetch_nb_rows) (GdaDataSelect *model);
	gboolean         (*fetch_random)  (GdaDataSelect *model, GdaRow **prow, gint rownum, GError **error);
	gboolean         (*store_all)     (GdaDataSelect *model, GError **error);

	/* GDA_STATEMENT_MODEL_CURSOR_* */
	gboolean         (*fetch_next)    (GdaDataSelect *model, GdaRow **prow, gint rownum, GError **error);
	gboolean         (*fetch_prev)    (GdaDataSelect *model, GdaRow **prow, gint rownum, GError **error);
	gboolean         (*fetch_at)      (GdaDataSelect *model, GdaRow **prow, gint rownum, GError **error);
};