Skip to content

import modes not working for write operations #33

@sidphbot

Description

@sidphbot

code snippet to reproduce:
via doltcli
write_rows(write_rows(dolt, "characters", TEST_ROWS, REPLACE, ["id"])

or via doltpy:
write_pandas(dolt, table_name, df, import_mode='replace')

both call _import_helper which refers to

doltcli/doltcli/utils.py

Lines 251 to 265 in a807c93

def _get_import_mode_and_flags(
dolt: DoltT, table: str, import_mode: Optional[str] = None
) -> str:
import_modes = IMPORT_MODES_TO_FLAGS.keys()
if import_mode and import_mode not in import_modes:
raise ValueError(f"update_mode must be one of: {import_modes}")
else:
if table in [table.name for table in dolt.ls()]:
logger.info(f'No import mode specified, table exists, using "{UPDATE}"')
import_mode = UPDATE
else:
logger.info(f'No import mode specified, table exists, using "{CREATE}"')
import_mode = CREATE
return import_mode

the checks force it to return only create/update mode depending on the existence of the table, replace/force-create modes are ignored

suggested change (MR #32 ) :

def _get_import_mode_and_flags(
    dolt: DoltT, table: str, import_mode: Optional[str] = None
) -> str:
    import_modes = IMPORT_MODES_TO_FLAGS.keys()
    if import_mode and import_mode not in import_modes:
        raise ValueError(f"update_mode must be one of: {import_modes}")
    elif import_mode:
        return import_mode
    else:
        if table in [table.name for table in dolt.ls()] and import_mode :
            logger.info(f'No import mode specified, table exists, using "{UPDATE}"')
            import_mode = UPDATE
        else:
            logger.info(f'No import mode specified, table exists, using "{CREATE}"')
            import_mode = CREATE

    return import_mode

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions