Skip to main content

Wait Column

Waits until a new column is added to a specified table. This node blocks execution until a schema change is detected.

Common Properties

  • Name - The custom name of the node.
  • Color - The custom color of the node.
  • Delay Before (sec) - Waits in seconds before executing the node.
  • Delay After (sec) - Waits in seconds after executing node.
  • Continue On Error - Automation will continue regardless of any error. The default value is false.
info

If the ContinueOnError property is true, no error is caught when the project is executed, even if a Catch node is used.

Inputs

  • Connection Id - The unique identifier of the database connection to use (optional if credentials provided directly).
  • Table Name - The name of the table to monitor for new columns. Can include schema name (e.g., schema.table).

Options

  • Poll Time (s) - Time interval in seconds between checks for new columns. Default: 1.0 second.
  • Credentials - MySQL database credentials (optional). Use this if you want to wait without a Connect node.
  • Parameters - Additional connection string parameters (optional). Only used when credentials are provided.

Output

  • None - The node completes when a new column is detected in the table.

How It Works

The Wait Column node monitors a table's schema for new columns. When executed, the node:

  1. Retrieves the database connection (either from connection ID or creates new connection from credentials)
  2. Validates the table name is not empty
  3. Constructs a query to count columns in the table using INFORMATION_SCHEMA
  4. On first check, records the current column count (baseline)
  5. Polls the table schema at the specified interval
  6. Compares the current column count with the baseline
  7. Continues execution when the count increases (new column added)
  8. Blocks the flow until the condition is met

Requirements

  • Either: A valid connection ID from Connect node OR valid database credentials
  • Valid table name that exists in the database
  • Database user must have SELECT permission on INFORMATION_SCHEMA.COLUMNS
  • Active database connection during the wait period

Error Handling

The node will return specific errors in the following cases:

  • ErrInvalidArg - Table name is empty
  • ErrNotFound - Connection ID not found

Table Name Format

Simple Table Name

Table Name: users

Monitors the "users" table in the current database.

Table with Schema

Table Name: mydb.users

Monitors the "users" table in the "mydb" schema specifically.

Usage Examples

Wait for Schema Migration

Connect

Wait Column
- Table Name: users
- Poll Time: 2.0

Query (verify new column exists)
- SHOW COLUMNS FROM users LIKE 'new_column'

Non Query (populate new column)
- UPDATE users SET new_column = default_value

Disconnect

Monitor External Schema Changes

Connect

Loop (continuous monitoring)

Wait Column
- Table Name: products
- Poll Time: 5.0

Query (get column details)
- SELECT COLUMN_NAME, DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'products'
ORDER BY ORDINAL_POSITION DESC
LIMIT 1

Log schema change

Send notification

Coordinate with Migration Tool

External Migration Tool runs ALTER TABLE

Wait Column (detect schema change)
- Table Name: customers
- Poll Time: 1.0

Query (verify column properties)

Non Query (update data for new column)

Send completion notification

Common Use Cases

  1. Schema Migration Coordination - Wait for database migrations to complete
  2. Multi-System Synchronization - Coordinate schema changes across systems
  3. External Tool Integration - React to schema changes made by external tools
  4. Deployment Automation - Ensure schema changes complete before deploying application
  5. Schema Monitoring - Monitor for unexpected schema modifications
  6. Development Workflows - Coordinate between development and automation scripts
  7. Data Pipeline - Wait for schema preparation before data import

Polling Behavior

Initial Baseline

On the first check:

  1. Counts current columns in the table
  2. Stores the count as the baseline
  3. Continues polling

Subsequent Checks

On each poll:

  1. Counts current columns in the table
  2. Compares with baseline
  3. If count increased → new column added → node completes
  4. If count same or decreased → continues polling
  5. Updates baseline to current count

Poll Interval

The Poll Time option controls check frequency:

  • Lower values (1s) - More responsive but higher database load
  • Higher values (5s) - Less database load but slower to detect

Tips for Effective Use

  • Poll Time Balance - Balance responsiveness vs database load
  • Schema Qualification - Include schema name to avoid ambiguity
  • Timeout Strategy - Implement timeout for cases where column might not be added
  • Connection Stability - Ensure connection stays alive during wait
  • Migration Coordination - Use to coordinate with database migration tools
  • Testing - Test with SHOW COLUMNS FROM table to understand current state
  • Monitoring - Log when waiting starts and ends for debugging

Best Practices

With Timeout

Connect

Parallel
├─ Wait Column (wait for schema change)
│ - Table Name: products
│ - Poll Time: 2.0
└─ Delay (timeout after 5 minutes)
- Delay: 300 seconds

If (Wait Column completed first)
└─ Proceed with data migration
Else
└─ Log timeout and alert

Disconnect

Verify Column Properties

Wait Column (detect new column)
- Table Name: users

Query (get column details)
- SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users'
ORDER BY ORDINAL_POSITION DESC
LIMIT 1

JavaScript (verify column properties match expectations)

If (properties correct)
└─ Continue processing
Else
└─ Alert schema mismatch

Deployment Coordination

Deploy Application (new version expecting new column)

Connect

Parallel
├─ Run Migration Script (adds column)
└─ Wait Column (wait for column)
- Table Name: mydb.users
- Poll Time: 1.0

When both complete:

Restart Application Services

Disconnect

Schema Evolution Tracking

Connect

Loop (continuous monitoring)

Wait Column
- Table Name: {{monitoredTable}}
- Poll Time: 10.0

Query (get new column details)

Insert (log schema change)
- INSERT INTO schema_changes_log
(table_name, column_name, change_type, detected_at)
VALUES ({{table}}, {{column}}, 'COLUMN_ADDED', NOW())

Send notification to team

Performance Considerations

  • Poll Frequency - More frequent polling increases database load (but INFORMATION_SCHEMA queries are generally fast)
  • Schema Complexity - Tables with many columns might have slightly slower queries
  • Information Schema - INFORMATION_SCHEMA queries are read-only and cached
  • Connection Overhead - Keep connection open to avoid reconnection overhead

Common Errors and Solutions

Table Name Cannot Be Empty

Error: ErrInvalidArg: Table name cannot be empty

Solutions:

  • Provide a valid table name
  • Ensure the variable containing the table name has a value
  • Include schema name if needed (e.g., mydb.users)

Connection Not Found

Error: ErrNotFound: Connection not found

Solutions:

  • Ensure Connect node runs before Wait Column
  • Verify connection ID is correct
  • Or use Credentials option to connect directly

Timeout or Infinite Wait

Issue: Node waits indefinitely if column is never added

Solutions:

  • Implement timeout using Parallel node with Delay
  • Add maximum wait time logic
  • Verify migration script actually runs
  • Check migration script for errors

Table Doesn't Exist

Issue: Monitoring a table that doesn't exist

Solutions:

  • Verify table name is correct
  • Ensure table exists in the database
  • Check schema name is included if needed
  • Use SHOW TABLES LIKE 'tablename' to verify

Advanced Examples

Get New Column Details

Wait Column (detect new column)
- Table Name: products

Query (get all columns ordered by position)
- SELECT COLUMN_NAME, DATA_TYPE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'products'
ORDER BY ORDINAL_POSITION DESC

JavaScript (first column is the new one)
const newColumn = $item.result.rows[0];
console.log('New column:', newColumn.COLUMN_NAME);

Process based on new column

Multi-Table Schema Monitoring

Parallel (monitor multiple tables)
├─ Wait Column
│ - Table Name: users
├─ Wait Column
│ - Table Name: products
└─ Wait Column
- Table Name: orders

Process whichever triggers first

Migration Verification

Non Query (run ALTER TABLE ADD COLUMN)
- ALTER TABLE users
ADD COLUMN email_verified BOOLEAN DEFAULT FALSE

Wait Column (verify column was added)
- Table Name: users
- Poll Time: 1.0

Query (verify column exists)
- SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users'
AND COLUMN_NAME = 'email_verified'

If (column exists)
└─ Migration successful
Else
└─ Migration failed

Continuous Schema Auditing

Connect

Loop (infinite)

Wait Column
- Table Name: {{auditTable}}
- Poll Time: 30.0

Query (get table schema)
- SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = {{auditTable}}

JavaScript (compare with expected schema)

If (unauthorized change detected)
├─ Log security event
└─ Send alert to DBA team

Update schema baseline

Database Upgrade Workflow

Backup Database (safety backup)

Connect

Execute Migration Script (external process)

Wait Column (wait for schema change)
- Table Name: version_table
- Poll Time: 2.0

Query (verify database version)
- SELECT version FROM version_table
ORDER BY applied_at DESC
LIMIT 1

JavaScript (verify version matches expected)

If (version correct)
├─ Update application configuration
└─ Restart services
Else
└─ Restore from backup

Disconnect

Polling Query

The node uses this query internally:

Without Schema

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE 'tablename'

With Schema

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'schema'
AND TABLE_NAME LIKE 'tablename'

Schema Change Detection

What Triggers the Node

  • Adding a column - ALTER TABLE ADD COLUMN
  • Multiple columns added - Any increase in column count

What Doesn't Trigger

  • Removing a column - Column count decreases (not detected)
  • Modifying a column - MODIFY COLUMN (count stays same)
  • Renaming a column - RENAME COLUMN (count stays same)
  • Changing column type - ALTER COLUMN (count stays same)

Alternatives

If Wait Column doesn't fit your use case:

Polling Loop for Specific Column

Loop

Query (check if column exists)
- SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'tablename'
AND COLUMN_NAME = 'specific_column'

If (count > 0)
└─ Break Loop (column exists)
Else
└─ Delay and continue

Event-Driven Approach

If you control the schema changes:

  • Trigger flow after ALTER TABLE
  • Use HTTP trigger from migration script
  • Use message queue notification

Database Triggers

MySQL doesn't support DDL triggers, but you could:

  • Log schema changes to a table
  • Use Wait Row to monitor that table

See Also